为什么我应该使用属性而不是实现接口?

时间:2013-08-19 13:47:07

标签: c# serialization reflection interface attributes

为什么使用属性而不是从接口继承? 与向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;
}

1 个答案:

答案 0 :(得分:3)

您的示例未涵盖属性提供的所有功能。使用interface,您无法表达有关类或方法的其他信息。您将需要使用它的属性。

来自MSDN

  

•属性为您的程序添加元数据。元数据是关于程序中定义的类型的信息。所有.NET程序集都包含一组指定的元数据,这些元数据描述了程序集中定义的类型和类型成员。您可以添加自定义属性以指定所需的任何其他信息。

     

•您可以将一个或多个属性应用于整个程序集,模块或较小的程序元素,例如类和属性。

     

•属性可以采用与方法和属性相同的方式接受参数。

     

•您的程序可以使用反射检查自己的元数据或其他程序中的元数据。