2009-01-13 71 views
1

當使用自定義屬性來存儲元數據時,假設任何實現接口的類在屬性中都具有相同的數據,最好是修飾接口還是實現接口的類?接口上的自定義屬性或實現它們的類?

更新:基本上我正在寫一個項目的自定義數據存儲機制,並且對象表示正在存儲的各種表。自定義屬性用於指定數據集中的哪個表用於存儲該類的對象,還用於標識哪個表參與n:m關係。

所以,如果我把接口上的屬性,這是一個更清晰的方法,或它雜亂的接口,並使訪問數據本身更麻煩?

回答

3

這取決於場景。例如,WCF裝飾操作合同的接口。但是,如果您要討論的是對象(而不是接口本身),請注意調用代碼來獲取接口元數據可能會很痛苦,特別是在類使用顯式接口實現的情況下尤其如此。

這將是更共同裝飾類,但這並不是;-p

完全一樣的問題,如果真的屬性是特定於接口(不是實例),然後好 - 裝飾界面並談論typeof(IFoo)等。但是,如果您希望代碼能夠爲屬性設置每種類型的值,則它必須位於類級別。

這是什麼情況?

2

那麼這取決於接口是否與元數據有關。

interface IRunnable 
{ 
    void Run(); 
} 

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

在這個例子中,如果它們與接口的意圖有關,那麼將接口上的屬性放在接口上是有意義的。如果這些屬性適用於所有實現,則將這些屬性放在界面上。

但是,如果這些屬性與該類的「可運行性」(與「運行性」有關的IRunnable而非CLR)無關,請將該屬性放在該類上。

相關問題