我有一个类,其定义如下:
[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,就像默认属性一样?
答案 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