我有不同的可序列化的类。
我有一个方法可以这样做:
public void Serialize(List<ClassName1> CT, string Address)
{
...
XmlSerializer serializer = new XmlSerializer(typeof(List<ClassName1>));
...
}
为了序列化ClassName1,我可以使用这个函数,但我不能将它用于名为ClassName2的第二个类。 类是不同的,但两者都是可序列化的。
我现在可以复制并粘贴方法,只是更改类,但我觉得这很愚蠢,因为方法的唯一区别就是名称。
我试着这样做:
public void Serialize(List<object> CT, string Address)
{
...
XmlSerializer serializer = new XmlSerializer(typeof(List<object>));
...
}
因为我认为一切都是c#中的“对象”,但是当我使用它时,我得到了“无法转换”的错误。
xml.Serialize(listNumber, Address);
我觉得这可以用泛型来解决,但我从来没有使用任何类型的泛型,所以我完全不知道它是否以及它应该如何工作。
答案 0 :(得分:1)
这是泛型的理想用法:
public void Serialize<T>(List<T> CT, string Address)
{
...
XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
...
}
并且在大多数情况下,您甚至不必更改调用代码 - 编译器将自动推断泛型类型参数。
答案 1 :(得分:0)
由于Serialize
的{{1}}方法有一个XmlSerializer
参数可供序列化的对象使用,所以也一样。
object
除非您的方法使用列表执行其他操作,否则使用泛型似乎没有任何优势。在这种情况下使用Marc Gravell的方法。