与标题一样,使用和属性<SomeName()>
和<SomeNameAttribute()>
之间是否存在差异,其中SomeName
在两种情况下都相同?
例如在Newtonsoft的Json.NET中,<JsonConverterAttribute()>
和<JsonConverter()>
可以应用于成员。根据对象浏览器,两者都解析为相同的JsonConverterAttribute
类。这是特定属性或框架的特性,还是适用于所有VB.NET属性?
答案 0 :(得分:3)
没有区别。来自MSDN:
按照惯例,所有属性名都以单词&#34; Attribute&#34;结尾。至 将它们与.NET Framework中的其他项区分开来。但是,你 使用属性时不需要指定属性后缀 代码。
因此,Attribute
写成MyFooAttribute
可以用作MyFoo
或MyFooAttribute
,并在对象浏览器中显示为相同的条目。这个值的目的是帮助防止&#34;命名扭曲&#34;在命名空间中:Newtonsoft具有JsonConverter
类型,但也可以使用与Attribute
基本相同的名称。
反之则不然(至少在VS2012中)。如果您使用&#39;简短形式&#39;对于自定义属性:
Public Class MyFoo
Inherits Attribute
该属性合法且可用(由于其继承)但MyFooAttribute
不会在代码中识别,也不会在对象浏览器中找到。因此,对于自定义属性,将类命名为MyFooAttribute
是值得的。