2015-11-27 99 views
2

与标题非常相似,使用和属性<SomeName()><SomeNameAttribute()>之间有什么区别,其中SomeName在两种情况下都是相同的吗?<SomeName()>和VB.NET中的<SomeNameAttribute()>之间的区别

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

+0

没有区别。一个简单的技巧,使属性类名非常具体,但属性使用非常简短。一个程序员发明的技巧,而不是一个委员会。 –

回答

3

没有区别。从MSDN

按照惯例,所有的属性名的“属性”二字来 结束从.NET Framework中的其他项目区别开来。但是, 在使用 代码中的属性时不需要指定属性后缀。

所以,写成MyFooAttributeAttribute可以作为MyFooMyFooAttribute,并会显示在对象浏览器相同的条目。此值有助于防止名称空间中的“名称扭曲”:Newtonsoft具有JsonConverter类型,但也可以使用与Attribute基本相同的名称。

反之亦然(至少在VS2012中)。如果使用“简易格式为”自定义属性:

Public Class MyFoo 
    Inherits Attribute 

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

+2

......以及其推论:为了保持一致,请始终将您的类命名为'FooAttribute',并且始终*将它们用作''。 –

相关问题