VB.NET中{somename()>和<somenameattribute()>的区别

时间:2015-11-27 11:03:29

标签: vb.net attributes

与标题一样,使用和属性<SomeName()><SomeNameAttribute()>之间是否存在差异,其中SomeName在两种情况下都相同?

例如在Newtonsoft的Json.NET中,<JsonConverterAttribute()><JsonConverter()>可以应用于成员。根据对象浏览器,两者都解析为相同的JsonConverterAttribute类。这是特定属性或框架的特性,还是适用于所有VB.NET属性?

1 个答案:

答案 0 :(得分:3)

没有区别。来自MSDN

  

按照惯例,所有属性名都以单词&#34; Attribute&#34;结尾。至   将它们与.NET Framework中的其他项区分开来。但是,你   使用属性时不需要指定属性后缀   代码。

因此,Attribute写成MyFooAttribute可以用作MyFooMyFooAttribute,并在对象浏览器中显示为相同的条目。这个值的目的是帮助防止&#34;命名扭曲&#34;在命名空间中:Newtonsoft具有JsonConverter类型,但也可以使用与Attribute基本相同的名称。

反之则不然(至少在VS2012中)。如果您使用&#39;简短形式&#39;对于自定义属性:

Public Class MyFoo
    Inherits Attribute

该属性合法且可用(由于其继承)但MyFooAttribute不会在代码中识别,也不会在对象浏览器中找到。因此,对于自定义属性,将类命名为MyFooAttribute是值得的。