首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#属性属性

C#属性属性
EN

Stack Overflow用户
提问于 2008-10-16 14:05:38
回答 6查看 40.6K关注 0票数 15

我看过以下代码:

代码语言:javascript
复制
[DefaultValue(100)]
[Description("Some descriptive field here")]
public int MyProperty{...} 

上面的代码片段中的功能似乎足够清晰,我不知道如何使用它来做一些有用的事情。我甚至不确定该给它起什么名字!

谁知道我在哪里可以找到关于这些属性属性的更多信息/教程?我也会对这个功能可以做的任何新颖/有用的任务感兴趣。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-16 14:14:06

人们已经介绍了UI方面-属性还有其他用途...例如,它们在大多数序列化框架中被广泛使用。编译器对某些属性进行了特殊处理-例如,[PrincipalPermission(...)]向方法添加了声明性安全性,允许您(自动)检查用户是否具有适当的访问权限。

要添加您自己的特殊处理,可以使用PostSharp;有许多使用PostSharp做面向方面工作的很好的例子,比如日志记录-或者只是简化代码,比如使用automatic INotifyPropertyChanged implementation

票数 13
EN

Stack Overflow用户

发布于 2008-10-16 14:11:29

上面的代码片段中的功能看起来足够清晰,

也许不是,因为很多人认为DefaultValue()设置了属性的值。实际上,它所做的一切都是为了告诉一些可视化设计器(例如visual Studio),代码将把默认值设置为什么。这样,如果属性窗口中的值被设置为其他值,它就会知道以粗体显示()。

票数 27
EN

Stack Overflow用户

发布于 2008-10-16 14:07:42

它们被称为属性,在msdn中有大量的信息,例如http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx

一般来说,它们不会自己“做”任何事情,它们被一些其他代码使用,这些代码将使用您的类。XmlSerialization就是一个很好的例子: XmlSerializer (由微软作为框架的一部分提供)几乎可以是任何类(尽管对类有许多要求)-它使用反射来查看类中包含哪些数据。您可以使用属性(与XmlSerializer一起定义)来更改XmlSerializer序列化您的类的方式(例如,告诉它将数据保存为属性而不是元素)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/208703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档