c# - 返回不同对象的辅助方法

标签 c#

我正在尝试将更多 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/

相关文章:

c# - 无法访问已被其他进程使用的文件

c# - 在哪里可以看到 C# 中预定义方法的代码?

c# - WP7如何让网格尺寸适配图像尺寸

C# 字典 ArrayList 计数

c# - 在异步方法中使用 C# 从 EF 异步调用存储过程

c# - 如何使用 C# 对密码值进行加盐和哈希处理?

c# - 向 C# 应用程序发送 WM_CLOSE 会出现意外情况

c# - 为什么抽象类实现接口(interface)?

c# - 相机对焦时如何实现视觉指示器

c# - C#如何从从dll获得的结构中获取图片并将其保存在本地