什么是.NET中的自定义属性

Mic*_*ich 3 .net attributes custom-attributes

问题不是那么简单:).

基本上,我需要知道的是将从一系列方法的任何方法返回的数组中包含的内容Attribute.GetCustomAttributes().

当然,我定义的所有属性都将存在.但是,不仅仅是他们.例如,所有实体框架属性也EdmScalarPropertyAttribute都存在.什么属性不会被视为自定义?

Cod*_*aos 6

几乎每个从语法派生System.Attribute并添加的属性[AttributeName]都将存在.他们中的一些甚至被编译器本身添加的,如OutAttributeout关键字.

单词"定制"从被直接内置到运行时的属性,如一个构件/类型的可见性,一个方法的区别开来static,virtualsealed

例如,Type.Attributes是类型的枚举TypeAttributes,或MethodBase.Attributes对应于MethodAttributes枚举.那些不算"习惯".


有一些奇怪的角落案例,关于[Serializable]和内存布局.

基本的C#写道:

其中之一是使特性System.SerializableAttribute不只是一个自定义属性,然而,就是在CIL有序列化类特殊头符号的事实.

...

SerializableAttribute转换为元数据表中的设置位.这产生SerializableAttribute了一个属性,一个在元数据表中设置位或字段的属性.