我想编写自己的序列化(xml和二进制文件不适合我, 我想要“更多ADO”的方式)
所以我定义了一个界面:
interface ISerializeData
{
DataTable GetDataSchema();
DataTable SerializeData();
object DeserializeData(DataTable data);
}
现在我不想创建一个允许的对象实例 我得到了该对象的模式。
并且:DeserializeData应该返回一个实例,而不是使用实例。 因此我认为它也应该是静态的。 (好吧,它可以初始化 来自数据表的实例......)
有什么想法吗?我该如何建模呢?静态是不允许的 接口和我的类已经从另一个抽象继承 基类。
任何想法都赞赏!
答案 0 :(得分:1)
该问题是其他序列化程序利用属性的原因,因为它们允许您提供有关如何存储类的元数据,而不会强制您处理类本身的实现。
答案 1 :(得分:1)
也许我错了,但这对于实用工具类来说真的是一项任务。以DeserializeData
为例。在代码的某处,您可以决定要构建哪种类型。在您提出的代码中,您将选择类型并调用其静态方法。怎么办?每种类型都有自己的代码来进行序列化吗?你可能最终会创建一些完成所有工作的课程,以保持DRY。因此,您可能在实用程序类中有一个DeserializeData
方法,例如:
public static T DeserializeData(DataTable data)
where T : new
{
var T = new T();
.... // Set properties
}
在这种方法中,您可能会获得数据模式。
也许SerializeData()
可能是一个实例方法,但它也会将其工作委托给某个实用类。
如果我完全误解了你的问题,请告诉我。