【问题标题】:Why should i use Attributes instead of implementing an interface? [duplicate]为什么我应该使用属性而不是实现接口? [复制]
【发布时间】:2013-08-19 13:47:06
【问题描述】:

为什么要使用属性而不是从接口继承? 实现一个接口不是比在 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;
}

【问题讨论】:

    标签: c# serialization reflection interface attributes


    【解决方案1】:

    您的示例并未涵盖属性提供的所有功能。使用interfaces,您无法表达有关类或方法的附加信息。您需要为其使用属性。

    来自MSDN

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

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

    •属性可以像方法和属性一样接受参数。

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

    【讨论】:

    • 第二个要点是需要强调的重要一点 - 它是一种在各种级别应用标记的一致方式,而不是例如标记接口,后者只能是应用于类/接口级别。
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 2012-10-08
    • 2015-08-13
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2011-09-13
    相关资源
    最近更新 更多