我什么时候应该在C#中使用属性?

ccp*_*ava 44 c# attributes

我看到了一些有用属性的例子,例如(作为动态工厂的地图) http://msdn.microsoft.com/en-us/magazine/cc164170.aspx

只是想知道使用属性有什么好处?我可以在http://msdn.microsoft.com/en-gb/z0w1kczw(VS.80).aspx上找到参考资料 但是,我不知道何时以及为什么要尝试使用它.

Asa*_*sad 33

在.NET Framework中,属性可以用于多种原因 - 比如

  • 定义哪些类是可序列化的

  • 选择在Web服务中公开的方法

Attributes允许我们descriptions在设计时添加类,属性和方法,然后可以在运行时通过反射进行检查.

考虑这个例子:

假设你有一个类,它有一个旧版本的方法,由于任何原因仍在使用,现在你已经提出了一个新版本的类,它很好地使用了通用列表和LINQ,并且有一个类似用途的新方法.您希望开发人员更喜欢库的更高版本中提供的新版本.你会怎么做?一种方法是在文档中写入.更好的方法是使用属性如下.

public class AccountsManager
{
  [Obsolete("prefer GetAccountsList", true)]
  static Account[] GetAccounts( ) { }    
  static List<Account> GetAccountsList( ) { }      
}
Run Code Online (Sandbox Code Playgroud)

如果obsolete在编译程序时使用了某个方法,则开发人员会获取此信息并相应地做出决定.

AccountManager.GetAccounts()已过时:更喜欢GetAccountsList

我们也可以Custom Attributes根据要求创建和添加.

参考:


希望这可以帮助

  • 属性是附加到.NET中的类,接口,函数,属性等的元数据.元数据提供了关于**项目的附加信息**,并为项目的用户提供了解决它的可能性.属性存储在Type上,而不是存储在实例上. (4认同)

Eri*_*ert 24

我的建议:使用属性来陈述有关机制的事实,但不要对业务域的方面进行建模.

更多细节:

http://blogs.msdn.com/ericlippert/archive/2009/02/02/properties-vs-attributes.aspx


And*_*tad 7

当您想要将元数据附加到类或类成员时,以及应用公共行为时,属性是合适的,而不必为共享行为的每个单元实现某个接口.后者是面向方面编程的一个例子.