C# 将C属性应用于多个字段

C# 将C属性应用于多个字段,c#,C#,假设我有一个最小的C类,如下所示: class Thing { private float a, b, c, d; (...) } 有没有一种方法可以将属性应用于所有四个字段而不必写四次?如果我将[SomeAttribute]放在private前面,它似乎只适用于a。我认为使用visual studio无法以任何方式实现这一点 我能想到的最不烦人的方法是,在可以放置多个游标的地方使用,并且只写一次属性。是的,有可能: [SomeAttribute] public int m_n

假设我有一个最小的C类,如下所示:

class Thing
{
    private float a, b, c, d;
    (...)
}

有没有一种方法可以将属性应用于所有四个字段而不必写四次?如果我将[SomeAttribute]放在private前面,它似乎只适用于a。

我认为使用visual studio无法以任何方式实现这一点

我能想到的最不烦人的方法是,在可以放置多个游标的地方使用,并且只写一次属性。

是的,有可能:

[SomeAttribute]
public int m_nVar1, m_nVar2;
但显然只有当类型相同时

例如:

[ContextStatic]
private float a, b, c, d;
你提出的上述建议将按你预期的方式发挥作用。您可以测试以下内容:

[AttributeUsage(AttributeTargets.Field)]
sealed class SomeAttribute: Attribute
{
    public SomeAttribute()
    {
    }
}

class Program
{
    static void Main(string[] args)
    {
        var t = typeof(Thing);
        var attrs = from f in t.GetFields()
                    from a in f.GetCustomAttributes()
                    select new { Name = f.Name, Attribute = a.GetType() };

        foreach (var a in attrs)
            Console.WriteLine(a.Name + ": " + a.Attribute);

        Console.ReadLine();
    }
}
它打印:

a: SomeAttribute b: SomeAttribute c: SomeAttribute d: SomeAttribute
可能重复的问题:为什么不单独声明每个变量呢?如果您最终完全写出它,请先使用Alt+Shift+Down 4次。它将选择4行并克隆您键入的内容,将您实际键入的内容保存4次。当然,您可以包括您从中逐字复制的内容。最好发布链接,而不是复制整个答案。看看这个讨论,你当然是对的。我以为它只适用于第一个,但我误解了来自编译器的错误消息。谢谢,你说得对,谢谢。我误解了项目中其他地方的错误消息: a: SomeAttribute b: SomeAttribute c: SomeAttribute d: SomeAttribute