首页 / 知识
关于c#:. NET中的属性是什么?
2023-04-12 18:32:00

What are attributes in .NET?.NET中的属性是什么,它们有什么用,以及如何创建自己的属性? 元数据。有关您的对象/方法/属性的数据。 例如,我可以声明一个名为:DisplayOrder的属性,以便可以轻松控制应在UI中显示的顺序属性。然后,我可以将其附加到类上并编写一些GUI组件,以提取属性并适当地对UI元素进行排序。
从而确保在使用自定义GUI组件时,始终在SomeDate之前显示SomeInt。 但是,您将看到它们在直接编码环境之外最常用。例如,Windows Designer广泛使用它们,因此它知道如何处理自定义对象。像这样使用BrowsableAttribute:
例如,告诉设计人员不要在设计时在"属性"窗口的可用属性中列出该属性。
您还可以将它们用于代码生成,预编译操作(如Post-Sharp)或运行时操作(如Reflection.Emit)。
声明它们很容易,只需创建一个从Attribute继承的类即可。
请记住,当您使用属性时,可以省略后缀" attribute",编译器将为您添加该属性。
注意:属性本身不会做任何事情-需要使用它们的一些其他代码。有时已经为您编写了该代码,但有时您必须自己编写。例如,C#编译器关心某些框架,某些框架使用某些框架(例如,在加载程序集时,NUnit在类上查找[TestFixture],在测试方法上查找[Test])。 到目前为止,很多人都回答了,但没有人提及。 属性与反射一起大量使用。反思已经相当缓慢。
将您的自定义属性标记为
考虑在何处使用这样的属性,并通过
AttributeUsage属性是AttributeUsage属性签名的一部分也是很酷的。循环依赖的哇!
属性是用于标记类的一种元数据。例如,这通常在WinForms中用于从工具栏隐藏控件,但是可以在自己的应用程序中实现,以使不同类的实例以特定方式运行。 首先创建一个属性:
所有属性类必须带有后缀" Attribute"才能有效。
现在,您可以通过执行以下操作来检查特定类的
如果您想了解更多有关此的信息,可以随时查看MSDN,它具有很好的描述。
在我目前正在从事的项目中,有一组各种风格的UI对象,以及一个编辑器,用于组合这些对象以创建供主应用程序使用的页面,有点像DevStudio中的表单设计器。这些对象存在于各自的程序集中,并且每个对象都是派生自
我将其应用于这样的类:
这是以前的海报所说的。
要使用该属性,编辑器的
注意:以上是C ++ / CLI,但转换为C#并不难 您可以将属性放在大多数事物上,并且有很多预定义的属性。上面提到的编辑器还在属性上寻找自定义属性,这些属性描述了属性以及如何对其进行编辑。 一旦有了完整的想法,您会想知道没有它们的生活。 属性就像应用于类,方法或程序集的元数据。 它们对许多事物都有好处(调试器可视化,将事物标记为过时,将事物标记为可序列化,列表无穷)。 创建自己的自定义项很容易。从这里开始: http://msdn.microsoft.com/en-us/library/sw480ze8(VS.71).aspx 属性是一个包含一些功能的类,您可以将这些功能应用于代码中的对象。要创建一个,创建一个继承自System.Attribute的类。 至于它们的优点……它们几乎有无限的用途。 http://www.codeproject.com/KB/cs/dotnetattributes.aspx 本质上,属性是要附加到类型上的数据位(类,方法,事件,枚举等)。 这个想法是,在运行时,其他一些类型/框架/工具将在您的类型中查询属性中的信息并对其执行操作。 因此,例如,Visual Studio可以查询第三方控件上的属性,以弄清楚该控件的哪些属性应在设计时显示在"属性"窗格中。 属性也可以在面向方面的编程中使用,以便在运行时基于装饰对象的属性并在不影响对象业务逻辑的情况下向对象添加验证,日志记录等属性。 如前所述,属性相对容易创建。工作的另一部分是创建使用它的代码。在大多数情况下,您将在运行时使用反射根据属性或其属性的存在来更改行为。在某些情况下,您将检查已编译代码的属性以进行某种静态分析。例如,参数可能被标记为非空,分析工具可以将其用作提示。 使用属性并了解使用它们的适当方案是大部分工作。
要开始创建属性,请打开C#源文件,键入 您可以使用自定义属性作为在子类中定义标签值的简单方法,而不必为每个子类一遍又一遍地编写相同的代码。我遇到了约翰·沃特斯(John Waters)一个很好的简洁示例,该示例说明了如何在自己的代码中定义和使用自定义属性。 在http://msdn.microsoft.com/zh-cn/library/aa288454(VS.71).aspx上有一个教程 属性也常用于面向方面的编程。有关此示例,请查看PostSharp项目。 |
最新内容
相关内容
pythonmap函数怎么显示结果
pythonmap函数怎么显示结果,培训,代码,数字,函数,结果,序列,元素,参数,可能会,惰性,map()函数接收两个参数,一个是函数,一个是Iterable,map将传python声明变量类型
python声明变量类型,培训,代码,基础,变量,赋值,类型,字符串,语句,函数,上面,对于没有编程基础的读者,可以先不编写真正的Python程序,而是先打开python变量不需要声明吗
python变量不需要声明吗,培训,数字,变量,代码,合法,声明,类型,整数,字符串,布尔,Python中常见的数据类型有字符串,整形,列表,元组,字典等。在Pythpython怎么声明变量
python怎么声明变量,培训,通用,一致,数字,变量,声明,字符串,引号,方式,类型,python声明变量:1、变量声明声明变量的时候,直接使用例如a=1这样的python变量使用前需声明嘛
python变量使用前需声明嘛,培训,代码,基础,变量,赋值,字符串,类型,语句,函数,上面,Python使用等号(=)作为赋值运算符,例如a=20就是一条赋值语python如何声明函数
python如何声明函数,培训,函数,较大,合法,代码,画线,工具,定义,单词,参数,python函数的定义定义函数,也就是创建一个函数,可以理解为创建一个具python定义变量需要声明类型吗
python定义变量需要声明类型吗,培训,数字,变量,合法,代码,声明,类型,整数,布尔,字符串,在Python语言中,声明变量的同时需要为其赋值,毕竟不代表python如何实例化对象
python如何实例化对象,培训,名称,实例,括号,关键字,对象,函数,字母,方式,以上,python中同样使用关键字class创建一个类,类名称第一个字母大写,pythonpython的声明变量类型
pythonpython的声明变量类型,培训,数字,变量,名字,代码,概念,合法,声明,类型,整数,变量(variable)是Python语言中一个非常重要的概念。变量的python判断对象是否有某个属性
python判断对象是否有某个属性,培训,名称,异常,属性,对象,方法,参数,定义,以上,更多,python判断对象是否有某个属性的方法:hasattr(object,nampython怎么显示日期
python怎么显示日期,时间,单位,管理,培训,浮点,标准,项目,日期,格式,时钟,Python程序能用很多方式处理日期和时间,转换日期格式是一个常见的功python如何确定是否为可迭代对象
python如何确定是否为可迭代对象,培训,元素,索引,对象,整数,字典,函数,类型,下标,模块,迭代可以理解为,任意的集合使用for循环遍历python中,迭