2

インターフェイスから継承する代わりに属性を使用するのはなぜですか? C# (属性) にまったく新しい概念を追加するよりも、インターフェイスを実装する方が簡単ではないでしょうか?

属性の例:

[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;
}
4

1 に答える 1

3

あなたの例は、属性が提供するすべての機能をカバーしているわけではありません。s を使用しinterfaceて、クラスまたはメソッドに関する追加情報を表現することはできません。属性を使用する必要があります。

MSDNから

•属性は、プログラムにメタデータを追加します。メタデータは、プログラムで定義された型に関する情報です。すべての .NET アセンブリには、アセンブリで定義された型と型メンバーを記述する特定のメタデータ セットが含まれています。カスタム属性を追加して、必要な追加情報を指定できます。

1 つまたは複数の属性を、アセンブリ全体、モジュール、またはクラスやプロパティなどの小さなプログラム要素に適用できます。

•属性は、メソッドやプロパティと同じように引数を受け取ることができます。

• プログラムは、リフレクションを使用して、独自のメタデータまたは他のプログラムのメタデータを調べることができます。

于 2013-08-19T13:53:42.417 に答える