我试图将更多的DRY原则付诸实践,并遇到知识的局限。我已经写了一个反序列化例程,我想将其用于不同的对象。
很好,它对一个对象很有用,但是当我将它移到帮助器中并去对另一个对象重用反序列化代码时……当然,它返回的是错误的类型……但是我将如何返回不同的类型。 ..overloads(不是很干吗?)...可能返回一个通用对象然后进行铸造..但是我的反序列化行将如何工作?
对象1是ABCD
对象2是WXYZ
助手方法是:
internal static List<ABCD> DeserializeConfig()
{
.....snip....
XmlSerializer serializer = new XmlSerializer(typeof(List<ABCD>), xRoot);
//how would this line above work..pass in the object type like below
XmlSerializer serializer = new XmlSerializer(typeof(_passedObject), xRoot);
}
谢谢您的帮助
只是使方法通用
internal static List<T> DeserializeConfig<T>() where T : ISerializable
{
.....snip....
XmlSerializer serializer = new XmlSerializer(typeof(List<T>), xRoot);
}
上面假设自定义序列化,您可以在其中通过实现ISerializable
接口来控制过程的完成方式,确切的方式,哪些字段等。这为您提供了编译器时间检查。您也可以简单地使用基本序列化,并记得在适当的地方将[ Serializable
]属性与[ NonSerializable
]一起声明类型-请参阅docs
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句