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

3

本文介绍了什么时候应该在 C# 中使用属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I saw some of the examples of utilize attribute, e.g. (as a map for dynamic factory) http://msdn.microsoft.com/en-us/magazine/cc164170.aspx

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

Just wondering what is the advantage of using attribute? I can find the reference on http://msdn.microsoft.com/en-gb/z0w1kczw(VS.80).aspx however, I am not sure when and why should I try to use it.

推荐答案

在 .NET Framework 中,可以使用属性的原因有很多——比如

In the .NET Framework, attributes can be used for many reasons -- like

  • 定义哪些类是可序列化

  • Defining which classes are serializable

选择公开的方法网络服务

Choosing which methods are exposed in a Web service

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

Attributes allow us to add descriptions to classes, properties, and methods at design time that can then be examined at runtime via reflection.

考虑这个例子:

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

Say you have a class which has a method from older version which is still in use for any reason and now you have come up with a new version of the class which makes fantastic use of Generic List and LINQ and has a new method for similar purpose. You would like developers to prefer the new one provided in the later version of your library. How will you do that ? One way is to write in the documentation. A better way is to use attribute as follow.

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

如果在编译程序时使用了 obsolete 方法,开发者会得到这个信息并做出相应的决定.

If an obsolete method is used when the program is compiled, the developer gets this info and decides accordingly.

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

AccountManager.GetAccounts() is obsolete: prefer GetAccountsList

我们还可以创建和添加 自定义属性根据要求.

We may also create and add Custom Attributes as per requirements.

参考:

  • 在 C# 中使用属性

希望对你有帮助

这篇关于什么时候应该在 C# 中使用属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

C# 中的多播委托奇怪行为?
Multicast delegate weird behavior in C#?(C# 中的多播委托奇怪行为?)...
2023-11-11 C#/.NET开发问题
6

参数计数与调用不匹配?
Parameter count mismatch with Invoke?(参数计数与调用不匹配?)...
2023-11-11 C#/.NET开发问题
26

如何将代表存储在列表中
How to store delegates in a List(如何将代表存储在列表中)...
2023-11-11 C#/.NET开发问题
6

代表如何工作(在后台)?
How delegates work (in the background)?(代表如何工作(在后台)?)...
2023-11-11 C#/.NET开发问题
5

没有 EndInvoke 的 C# 异步调用?
C# Asynchronous call without EndInvoke?(没有 EndInvoke 的 C# 异步调用?)...
2023-11-11 C#/.NET开发问题
2

Delegate.CreateDelegate() 和泛型:错误绑定到目标方法
Delegate.CreateDelegate() and generics: Error binding to target method(Delegate.CreateDelegate() 和泛型:错误绑定到目标方法)...
2023-11-11 C#/.NET开发问题
14