2009-01-13 70 views
1

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

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

所以,如果我把接口上的属性,这是一个更清晰的方法,或它杂乱的接口,并使访问数据本身更麻烦?

回答

3

这取决于场景。例如,WCF装饰操作合同的接口。但是,如果您要讨论的是对象(而不是接口本身),请注意调用代码来获取接口元数据可能会很痛苦,特别是在类使用显式接口实现的情况下尤其如此。

这将是更共同装饰类,但这并不是;-p

完全一样的问题,如果真的属性是特定于接口(不是实例),然后好 - 装饰界面并谈论typeof(IFoo)等。但是,如果您希望代码能够为属性设置每种类型的值,则它必须位于类级别。

这是什么情况?

2

那么这取决于接口是否与元数据有关。

interface IRunnable 
{ 
    void Run(); 
} 

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

在这个例子中,如果它们与接口的意图有关,那么将接口上的属性放在接口上是有意义的。如果这些属性适用于所有实现,则将这些属性放在界面上。

但是,如果这些属性与该类的“可运行性”(与“运行性”有关的IRunnable而非CLR)无关,请将该属性放在该类上。

相关问题