4

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

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

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

4

3 回答 3

5
class Thing
{
    [SomeAttribute]
    public 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: 一些属性
b: 一些属性
c: 一些属性
d: 一些属性
于 2013-04-24T10:29:01.570 回答
4

是的,有可能:

[SomeAttribute]
public int m_nVar1, m_nVar2;

(但显然只有在类型相同的情况下)

参考

例子:

[ContextStatic]
private float a, b, c, d;
于 2013-04-24T10:27:49.477 回答
0

我认为您无法使用 Visual Studio 以任何方式实现这一目标。

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

于 2013-04-24T10:22:48.827 回答