接口中的静态

时间:2012-06-02 18:19:47

标签: c# serialization interface model ado

我想编写自己的序列化(xml和二进制文件不适合我, 我想要“更多ADO”的方式)

所以我定义了一个界面:

interface ISerializeData
{
    DataTable GetDataSchema();
    DataTable SerializeData();
    object DeserializeData(DataTable data);
}

现在我不想创建一个允许的对象实例 我得到了该对象的模式。

并且:DeserializeData应该返回一个实例,而不是使用实例。 因此我认为它也应该是静态的。 (好吧,它可以初始化 来自数据表的实例......)

有什么想法吗?我该如何建模呢?静态是不允许的 接口和我的类已经从另一个抽象继承 基类。

任何想法都赞赏!

2 个答案:

答案 0 :(得分:1)

该问题是其他序列化程序利用属性的原因,因为它们允许您提供有关如何存储类的元数据,而不会强制您处理类本身的实现。

答案 1 :(得分:1)

也许我错了,但这对于实用工具类来说真的是一项任务。以DeserializeData为例。在代码的某处,您可以决定要构建哪种类型。在您提出的代码中,您将选择类型并调用其静态方法。怎么办?每种类型都有自己的代码来进行序列化吗?你可能最终会创建一些完成所有工作的课程,以保持DRY。因此,您可能在实用程序类中有一个DeserializeData方法,例如:

public static T DeserializeData(DataTable data)
    where T : new
{
    var T = new T();
    .... // Set properties
}

在这种方法中,您可能会获得数据模式。

也许SerializeData()可能是一个实例方法,但它也会将其工作委托给某个实用类。

如果我完全误解了你的问题,请告诉我。