C#PropertyProperty我看过下面的代码:[DefaultValue(100)][Description("Somedescriptivefieldhere")]publicintMyProperty{...}上面的snippit功能看起来很清楚,我不知道如何使用它来做一些有用的事情。我什至不确定给它起什么名字!有谁知道我在哪里可以找到有关这些属性的更多信息/教程?我也对这个函数可以完成的任何新颖/有用的任务感兴趣。人们已经涵盖了UI方面-属性还有其他用途,但是......例如,它们在大多数序列化框架中得到广泛使用。某些属性由编译器给予特殊处理-例如,[PrincipalPermission(...)]向方法添加声明性安全性,允许您(自动)检查用户是否具有适当的访问权限。要添加您自己的特殊处理,您可以使用PostSharp;有许多使用PostSharp执行AOP操作(例如日志记录)的好例子-或者只是简单的代码简化,例如使用自动INotifyPropertyChanged实现。上面代码片段的功能似乎很清楚,也许不是,因为很多人认为[DefaultValue()]设置属性的值。实际上,它只是告诉一些视觉设计人员(如VisualStudio),代码将默认值设置为什么。这样,如果您将其设置为其他值,它就会知道在属性窗口中将值加粗。您的示例中的那些被视觉设计人员(即MSExpressionBlend和VisualStudio设计人员)用于在设计人员UI中提供提示。请注意,它们是元数据,不会影响属性逻辑。例如,设置DefaultValue不会将属性设置为默认值,您必须手动执行。如果出于某种原因要访问这些属性,则必须使用反射。有关设计器属性的更多信息,请参见MSDN。它们被称为属性,msdn中有很多信息,例如http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx通常它们自己不会“做”任何事情,但其他代码会使用您的班级。XmlSerialization是一个很好的例子:XmlSerializer(由微软作为框架的一部分提供)几乎可以是任何类(尽管对类有很多要求)——它使用反射来查看类中包含的数据。您可以使用属性(使用XmlSerializer定义)来更改XmlSerializer序列化类的方式(例如,告诉它将数据保存为属性而不是元素)。我们使用它来定义应该加载哪个图形设计器来配置特定类型的实例。也就是说,我们有一种工作流设计器,可以从一个程序集中加载所有可能的命令类型。这些命令类型具有需要配置的属性,因此每种命令类型都需要不同的设计器(用户控件)。例如,考虑以下命令类型(在我们的解决方案中称为Composite)[CompositeMetaData("Delay","Setsthedelaybetweencommands",1)][CompositeDesigner(typeof(DelayCompositeDesigner))]publicclassDelayComposite:CompositeBase{//codehere}这是在两个地方使用的信息1)当设计器创建命令列表时,它使用CompositeMetaData来显示有关命令的更多信息。2)当用户向设计器添加命令并且设计器创建该类的实例时,它会查看CompositeDesigner属性,创建指定类型(usercontrol)的新实例并将其添加到可视化设计器。考虑以下代码,我们使用它来将命令加载到我们的“工具栏”中:foreach(Typetinassembly.GetExportedTypes()){if(t.Name.EndsWith("复合")){varattributes=t.GetCustomAttributes(false);ToolboxListItemitem=newToolboxListItem();CompositeMetaDataAttribute元=(CompositeMetaDataAttribute)attributes.Where(a=>a.GetType()==typeof(Vialis.LightLink.Attributes.CompositeMetaDataAttribute)).First();item.Name=meta.DisplayName;item.Description=meta.Description;item.Length=meta.Length;item.CompositType=t;this.lstCommands.Items.Add(项目);如您所见,对于名称以“Composite”结尾的程序集中的每个类型,我们获取自定义属性并使用该信息填充ToolboxListItem实例。至于加载设计器,属性是这样检索的:这只是您可以使用自定义属性执行的操作的一个示例,我希望这能为您提供一个起点。这些属性自定义设计时体验。http://msdn.microsoft.com/zh-cn/library/a19191fh.aspx以上就是《C#学习教程:C#属性共享》的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
