我正在尝试将更多 DRY 原则付诸实践,但遇到了知识的局限性。我已经编写了一个反序列化例程,我想将其用于不同的对象。
好吧,它对一个对象非常有用,但是当我将它移到一个帮助程序中并去为另一个对象重用反序列化代码时......当然它返回了错误的类型......但是我将如何返回不同的类型...重载(不是很干?)...可能返回一个通用对象然后进行转换...但是我的反序列化行将如何工作?
对象 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
接口(interface)来控制流程的完成方式、具体方式、哪些字段等。这为您提供了编译器时间检查。您也可以简单地使用基本序列化,并记住在适当的情况下使用 [Serializable
] 属性和 [NonSerializable
] 一起声明您的类型 - see docs
关于c# - 返回不同对象的辅助方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23517403/