1

当使用自定义属性存储元数据时,最好装饰接口还是实现接口的类,假设任何实现接口的类都将在属性中具有相同的数据?

更新:基本上我正在为一个项目编写自定义数据存储机制,对象代表正在存储的各种表。自定义属性用于指定数据集中的哪个表用于存储该类的对象,并且还用于标识哪些表涉及到:m 关系。

因此,如果我将属性放在界面上,这是一种更清晰的方法,还是会使界面混乱并使访问数据本身更加麻烦?

4

2 回答 2

3

这取决于场景。例如,WCF 装饰了操作契约的接口。

但是,如果您要谈论对象(而不是接口本身),请注意调用代码来获取接口元数据可能会很痛苦,尤其是当类使用显式接口实现时。

装饰班级会更常见,但这不是同一个问题;-p

如果属性确实特定于接口(而不是实例),那么很好 - 装饰接口并讨论typeof(IFoo)等等。但是如果您希望代码能够为属性设置每个类型的值,它必须在班级水平。

场景是什么?

于 2009-01-13T13:26:42.157 回答
2

好吧,这取决于接口是否与元数据有关。

interface IRunnable
{
    void Run();
}

class Test : IRunnable
{
    public void Run() { }
}

在此示例中,如果属性与接口的意图相关,则将属性放在接口上是有意义的。如果属性适用于所有实现,则将属性放在接口上。

但是,如果属性与类的“可运行性”(与IRunnable不属于 CLR 的“可运行性”)无关,则将属性放在类上。

于 2009-01-13T13:29:24.633 回答