我对.NET属性的理解存在一个漏洞。可序列化类的类定义如下:
namespace System {
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]
[ComVisible(true)]
public sealed class SerializableAttribute : Attribute {
public SerializableAttribute();
}
}
为什么当您使用它时,它是可序列化的,而不是SerializableAttribute?虽然您似乎能够使用后面的。
这里有什么混搭吗?这将是一个"doh!“当我怀疑..。
发布于 2015-04-20 09:23:30
C#语言规范允许编译器推断类型名称的“属性”部分。正如@Jim在注释中解释的那样,您可以显式地包含类型名称的“属性”部分,但这是不必要的。这两种用法在语义上是等价的。
MSDN文章这里将在“使用属性类”一节中进一步详细介绍。最后但并非最不重要的一点是,允许这种行为的C#语言规范中的部分的实际C#:
按照约定,属性类以属性后缀命名。属性的使用可以包括或省略这个后缀。
https://stackoverflow.com/questions/29754325
复制相似问题