CustomAttribute名称可以简化

luk*_*evp 2 c# visual-studio-2015

我有一个类定义如下定义的自定义属性:

[AttributeUsage(AttributeTargets.Property)]
public class MyAttribute : Attribute
{
    private string name;

    public MyAttribute(string name)
    {
        this.name = name;
    }
}
public class MyClass
{
    [MyAttribute("ClassName")]
    public string ClassName { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

Visual Studio突出显示该行

[MyAttribute("ClassName")]
Run Code Online (Sandbox Code Playgroud)

有了这条消息:

IDE0001:名称可以简化.

它建议将属性定义缩短为My("ClassName"),这不起作用,因为该属性未定义为"My".

此建议似乎基于在可以使用MyAttribute或My的情况下实现默认属性的方式.我如何实现我的自定义属性以接受My或MyAttribute,就像默认属性一样?

Eri*_*ips 6

通常,当您从属性派生Attribute 时,在使用它时不使用后缀:

public class MyClass
{
  [My("ClassName")]
  public string ClassName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它建议将属性定义缩短为My("ClassName"),这不起作用,因为该属性未定义为"My".

(这是编译魔术,它的工作原理)

我如何实现我的自定义属性以接受My或MyAttribute,就像默认属性一样?

你已经做了,你可以使用[MyAttribute("whatever")],它会编译得很好.