Red*_*wan 12 .net c# attributes class
C#中属性的目的是什么?
我如何知道哪个属性必须用于特定功能?
如何在c#中动态添加它们?
什么是自定义属性?
Jon*_*len 10
属性用于添加有关类,函数等的附加信息.编译器在查看属性时有时会执行特殊操作.程序运行时,库会查看其他属性.
首先查看所需功能的文档.它应列出必要的属性.
不可以.只能在编译代码之前应用属性.
这只是您自己创建的一个属性,而不是.NET附带的属性.
当你编写代码时,你回答"什么?" 题:
等属性为这个问题增加了另一个维度.他们回答"怎么样?" 题.并回复"如何?" 问题可能对IDE很重要,
[Browsable(false)]
public string NotImportantField { get; set; } // property which will not be displayed in VS
Run Code Online (Sandbox Code Playgroud)
对于编译器
[ThreadStatic]
private static RequestContext context; // field which will be different for every thread
Run Code Online (Sandbox Code Playgroud)
或者通过反思分析你的另一个代码.
[XmlIgnore]
public string NotSerializableField { get; set; } // property which will not be xml-serialized
Run Code Online (Sandbox Code Playgroud)
您可能希望定义自定义属性,如果您的程序集,类,字段,方法等将通过反射进行分析或调用(例如通常是控制容器和面向方面编程的反转).这样的属性可能(并且通常是唯一的方式)指示调用者或分析器根据这样的属性存在或其属性来表现不同.
关于你的第一个问题,我们如何知道要为特定结果调用哪种方法?作为.NET开发人员的一个优点是,所有内容都记录得非常彻底.:)
属性用于声明式编程模型。
属性不会强制任何功能(除非开箱即用)。对于开箱即用的属性,请阅读 msdn 上的文档。对于您自己的属性,您需要编写代码来说明如果类/方法等具有属性该怎么办。
我不认为属性是动态添加的。但它们是动态读取的。它们是元数据,因此在编译时添加。检查一下:C# 中可以动态添加属性吗?
自定义属性是您创建并用 标记您的类的属性。要创建属性,您需要创建一个继承自 System.Attribute 的类(用于该属性)。检查这个:http://msdn.microsoft.com/en-us/library/sw480ze8.aspx