繁体   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