CustomAttribute名称可以简化

时间:2015-11-16 20:34:39

标签: 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; }

}

Visual Studio突出显示该行

[MyAttribute("ClassName")]

收到此消息:

  

IDE0001:名称可以简化。

它建议将属性定义缩短为My(" ClassName"),因为该属性未被定义为"我的"。

这个建议似乎是基于默认属性的实现方式,可以使用MyAttribute或My。我如何实现我的自定义属性以接受My或MyAttribute,就像默认属性一样?

2 个答案:

答案 0 :(得分:6)

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

public class MyClass
{
  [My("ClassName")]
  public string ClassName { get; set; }
}
  

它建议将属性定义缩短为My(“ClassName”),因为该属性未定义为“我的”,所以它不起作用。

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

  

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

你已经这样做了,你可以使用[MyAttribute("whatever")]并且编译得很好。

答案 1 :(得分:0)

如果要使用MyAttribute,而不仅仅是My,则需要调用属性类MyAttributeAttribute。参见例如

public class XmlAttributeAttribute : Attribute