C#自定义属性命名

Jus*_*ing 11 .net c# attributes visual-studio-2010

我有一个自定义属性类,我定义为:

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public sealed class MyCustomAttribute : System.Attribute
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

来自微软网站:

按照惯例,属性类的名称以"属性"一词结尾.虽然不是必需的,但建议使用此约定以提高可读性.应用该属性时,包含单词Attribute是可选的.

因此,该属性可以被任何一个使用

[MyCustom()]
Run Code Online (Sandbox Code Playgroud)

要么

[MyCustomAttribute()]
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果有人使用名称的缩写版本与全名有任何问题吗?我正在运行4.0框架.

谢谢!

ear*_*ess 12

没问题.

在编译的IL下面,名称总是附加了一个Attribute(完整的类型名称).

基于ECMA-334(C#规范)24.2,首先通过精确匹配完成分辨率,然后将"属性"附加到[]中给出的名称.此外,如果存在冲突(例如:MyAttribute和MyAttributeAttribute),则在使用"MyAttribute"时会生成编译时错误.

  • +1和独角兽亲吻细节规格. (2认同)

Jon*_*eet 9

它应该没问题......我只是建议你不要引入两个名称只有属性后缀数量不同的属性:

public class FooAttribute : Attribute { }

public class FooAttributeAttribute : Attribute { }

[FooAttribute] // Could be either!
Run Code Online (Sandbox Code Playgroud)

怀疑这里的确切匹配会赢,但请不要在第一时间引入歧义.(我没有查看规格.)