创建泛型保存()方法,与泛型类一起工作

本文关键字:泛型类 一起 工作 方法 泛型 保存 创建 | 更新日期: 2023-09-27 18:04:18

我有一个外部类,比如XMLSerializer,它的签名是XMLSerializer<T>....该类应该获取类型,然后将其保存到文件中。我有另一个类"GeometricsObject"和6个从这个类派生的其他类。这些类需要保存。我尝试了3个小时来创建一个通用方法

public void Save<T>(T obj,string fileName){
 XMLSerializer<T>.save(obj,fileName);
}

问题是,当我试图保存矩形,这是public class Rectangle :GeometricsObjectxmlserializer期望的<T>是GeometricsObject,但对象被识别为Rectangle。然后我得到一个异常。

我试图使用共享接口并保存那些实现该接口的对象,但问题仍然存在。

我试着为模型创建一个通用的Save()方法

我如何写一个通用的Save()方法来处理单个对象和集合?

I tried

public void Save<T>(T obj,string fileName) where T:(here i tried interface and base class){
 XMLSerializer<T>.save(obj,fileName);
}

不能工作。

唯一有效的是不使用泛型,而是在GeometricsObject类中使用虚拟Save(..),然后每个派生类重写该函数并插入自己的类型。但在我看来,这个解决方案有点蹩脚。一定有单一方法。

谢谢!

创建泛型保存()方法,与泛型类一起工作

我真的建议您将(反)序列化逻辑从GeometricObject移到GeometricObjectSerializer中,无论它有多小,这样就可以有

public void Serialize<T>(...)
    where T : GeometricObject