[英]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.