我一直在阅读有关C#扩展的文本,并且有一次它说“属性修饰X可能只适用于Y类型的字段。”
我无法找到属性修饰的定义,而且通过交换这两个来解释我并没有多大意义。
答案 0 :(得分:1)
它可能指的是Attribute类。例如,您可以通过SerializableAttribute将类型标记为可序列化。应用属性时,可以不使用“属性”后缀。
[Serializable]
public class SomeClass {
}
属性提供了一种添加有关代码的元数据的方法。
答案 1 :(得分:1)
属性用于以结构化方式向.NET(C#)代码添加元数据。然而,很多人没有意识到,实际上有两种属性。
最简单的是自定义属性,您可以在其中定义特定类查找的属性,以更改其工作方式。一个常见示例是System.Xml.Serialization
属性,XmlSerializer
读取这些属性以改变其输出,例如可以将类标记为类似以下内容以指定其名称空间,并且该字段应该是属性:
[XmlType(Namespace = "http://mycompany.com/")]
public class MyClass
{
[XmlAttribute]
public string MyField;
}
这样的自定义属性对编译器或运行时没有意义,它们只是作为元数据的一部分添加到类中,可以通过调用Type.GetCustomAttributes
来检索。
另一个主要属性组是伪自定义属性,它们实际上对编译器或运行时有意义。 Haacked 与SerializableAttribute
的帖子中的示例实际上是伪自定义属性的示例。它实际上存储为类型定义的一部分,无法使用Type.GetCustomAttributes
检索。您无法创建自己的伪自定义属性。
所以你在这里处理的是一个自定义属性,它正由特定工具查找。