簡體   English   中英

無法克隆類對象

[英]Unable to clone class object

在這種情況下,對象克隆失敗:

[Serializable]
public class MasterClass
{
    public MasterClass(DataRow row)
    {
        EntityData = row;
    }

    public DataRow EntityData
    {
        get;
        set;
    }
}

我正在使用擴展方法( Clone() )從這個SO問題進行 Clone()

在運行時拋出錯誤消息MasterClass對象時:

程序集“ System.Data,版本= 4.0.0.0,區域性=中性,PublicKeyToken = b77a5c561934e089”中的類型“ System.Data.DataRow”未標記為可序列化。

任何解決方案如何處理呢?

嘗試添加無參數的構造函數:

public MasterClass()
{
}

轉換DataRow

假設您的DataRow有一個Table

[Serializable]
public class MyKeyValue {
    public string Key { get; set; }
    public string Value { get; set; }
}


[Serializable]
public class MasterClass
{
    public MasterClass() {}

    public MasterClass(DataRow row)
    {
        var list = new List<MyKeyValue>();
        foreach (DataColumn col in row.Table.Columns)
        {
            list.Add(new MyKeyValue{Key = col.ColumnName, Value = Convert.ToString(row[col.ColumnName])});
        }
        EntityData = list;
    }

    public IEnumerable<MyKeyValue> EntityData
    {
        get;
        set;
    }
}

根據您使用DataRow的目的,您可能必須將這些值解析為可序列化的自定義類。

您必須實現ISerializable接口(用於序列化),並添加采用(SerializationInfo信息,StreamingContext上下文)的構造函數以進行反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM