TK.*_*TK. 14 c# attributes properties
我看过以下代码:
[DefaultValue(100)]
[Description("Some descriptive field here")]
public int MyProperty{...}
Run Code Online (Sandbox Code Playgroud)
上面的snippit的功能似乎很清楚,我不知道如何使用它来做有用的事情.我甚至不确定给它的名字!
有谁知道我在哪里可以找到有关这些属性属性的更多信息/教程?我也对这个功能可以做的任何新颖/有用的任务感兴趣.
Jam*_*ran 27
上面的snippit的功能看起来很清楚,
也许不是,因为许多人认为[DefaultValue()] 设置了属性的值.实际上,它只是告诉一些视觉设计师(例如Visual Studio),代码将默认值设置为什么.这样它就知道如果将其设置为其他内容,则在属性窗口中加粗值.
Mar*_*ell 13
人们已经涵盖了UI方面 - 属性有其他用途,但是......例如,它们在大多数序列化框架中被广泛使用.编译器对某些属性进行了特殊处理 - 例如,[PrincipalPermission(...)]向方法添加声明性安全性,允许您(自动)检查用户是否具有适当的访问权限.
要添加自己的特殊处理,可以使用PostSharp ; 有许多使用PostSharp来执行AOP操作的很好的例子,例如日志记录 - 或者只是代码简化,例如自动INotifyPropertyChanged实现.
它们被称为属性,msdn中有很多信息,例如http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx
一般来说,他们不会自己"做"任何事情,它们会被其他一些使用你的类的代码所使用.XmlSerialization是一个很好的例子:XmlSerializer(由Microsoft作为框架的一部分提供)几乎可以是任何类(虽然在类上有许多要求) - 它使用反射来查看类中包含的数据.您可以使用属性(与XmlSerializer一起定义)来更改XmlSerializer序列化类的方式(例如,告诉它将数据保存为属性而不是元素).