2013-08-19 97 views
2

爲什麼使用屬性而不是從接口繼承? 實現一個接口比向C#(屬性)中添加一個全新的概念更容易嗎?爲什麼我應該使用Attributes而不是實現一個接口?

屬性約實施例:

[Serializable] 
public class MyObject { 
    public int n1 = 0; 
    public int n2 = 0; 
    public String str = null; 
} 

界面示例:

public class MyObject: ISerializable { 
    public byte[] getBinaryData() { // some code } 
    public int n1 = 0; 
    public int n2 = 0; 
    public String str = null; 
} 

回答

3

你的例子並不覆蓋該屬性提供所有功能。使用interface您不能表達關於類或方法的其他信息。您將需要使用它的屬性。

MSDN

•屬性元數據添加到您的程序。元數據是關於程序中定義的類型的信息。所有.NET程序集都包含一組指定的元數據,用於描述程序集中定義的類型和類型成員。您可以添加自定義屬性來指定所需的任何其他信息。

•您可以將一個或多個屬性應用於整個組件,模塊或更小的程序元素,例如類和屬性。

•屬性可以像方法和屬性一樣接受參數。

•您的程序可以使用反射來檢查自己的元數據或其他程序中的元數據。

+0

第二個項目符號是一個重要的強調 - 它是一種*一致*的方式來應用各種級別的標記,而不是標記接口,它只能在類/接口級應用。 –

相關問題