2014-09-01 39 views
2

当我尝试将C#中的对象序列化为XML时,出现问题。 我想通了出口该类时出错:序列化C#中的通用类

[XmlInclude(typeof(CountryData))] 
[XmlInclude(typeof(ManufacturerData))] 
[XmlInclude(typeof(ProgramData))] 

[Serializable()] 
public class DeliveryTimeList<T> where T : IDeliveryTimeData 
{ 
    private DataTable _data; 
    public DataTable Data 
    { 
     get { return _data; } 
     set { _data = value; } 
    } 

    public DeliveryTimeList() 
    { 
     _data = new DataTable();   
    } 

    public void Add(T data) 
    { 
     //  Not in Use 
     //_data.Rows.Add(data.ItemArray()); 
    } 
} 

类是通用的,因为下一步就是要改变在创建类的数据表,它包含一个列表。 类CountryData,Manufacturer和ProgramData实现接口IDeliveryTimeData。

我得到下面的描述中System.InvalidOperationException: BEIM Generieren DES XML-Dokuments IST EIN Fehler aufgetreten(< - 德语) 这大致翻译器有一代的XML文档的过程中是一个错误。 我不知道它为什么不是序列化,但我期望这个问题与该类是通用的有关。

有没有人知道我做错了什么?

+0

你设置你的界面IDeliveryTimeData为可序列化呢? – gimpycpu 2014-09-01 08:51:49

+0

这是不可能的,因为它看起来:错误属性'可序列化'在此声明类型无效。它只对'class,struct,enum,delegate'声明有效。 – Bongo 2014-09-01 08:54:43

+0

嗯,这代码编译,你也应该这么做,如果你这样做正确 A级:IDeliveryTimeData {} 接口IDeliveryTimeData:ISerializable的 {} 阿 – gimpycpu 2014-09-01 08:57:51

回答

1

你不能直接序列化的DataTable,你需要序列化,它是连接数据集,而不是