创建泛型保存()方法,与泛型类一起工作
本文关键字:泛型类 一起 工作 方法 泛型 保存 创建 | 更新日期: 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 :GeometricsObject
xmlserializer期望的<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