【问题标题】:CustomAttribute Name Can Be SimplifiedCustomAttribute 名称可以简化
【发布时间】:2019-03-13 16:29:31
【问题描述】:

我有一个具有这样定义的自定义属性的类:

[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") 这不起作用,因为该属性未定义为“My”。

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

【问题讨论】:

    标签: c# visual-studio-2015


    【解决方案1】:

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

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

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

    (这是编译器的魔法,而且它可以工作)

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

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

    【讨论】:

    • 埃里克——它确实有效!我想我的智能感知中有一个短暂的打嗝,强调“我的”。感谢您的快速响应并让我直截了当。
    • 当我发现与智能感知完全相同的东西时,我很感兴趣,建议将“HTMLTagAttribute”缩短为“HTMLTag”。看起来很聪明……我不知道我是否喜欢它!视觉混乱。
    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多