我有一个外部类,让我们说它的签名是XMLSerializer<T>....
的XMLSerializer
该类应该获取类型,然后将其保存到文件中。
我有另一个课程&#34; GeometricsObject&#34;以及从该类派生的其他6个类。这些课程需要保存。我试图用3个小时创建一个通用的方法
public void Save<T>(T obj,string fileName){
XMLSerializer<T>.save(obj,fileName);
}
问题是当我尝试保存public class Rectangle :GeometricsObject
的Rectangle时
xmlserializer期望<T>
是GeometricsObject但是obj被识别为Rectangle。然后我得到了一个例外。
我试图使用共享接口并保存那些实现此接口的对象,但问题仍然存在。
我试过那些Creating a Generic Save() Method for Models
How do I write a generic Save() method that handles single objects and collections?
我试过
public void Save<T>(T obj,string fileName) where T:(here i tried interface and base class){
XMLSerializer<T>.save(obj,fileName);
}
没用。
唯一有效的方法是不使用泛型,而是在GeometricsObject类中使用虚拟Save(..),然后每个派生类重写该函数并插入自己的类型。但是这个解决方案在我看来有点蹩脚。必须有一种单一方法。
谢谢!
答案 0 :(得分:0)
我真的建议你将(de)序列化逻辑(尽管很小)从GeometricObject
移到({1}},然后就可以了
GeometricObjectSerializer