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

时间:2013-04-24 10:19:43

标签: c#

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

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

有没有办法可以将属性应用于所有四个字段而无需将其写出四次?如果我将[SomeAttribute]放在private前面,则它似乎仅适用于a

3 个答案:

答案 0 :(得分:4)

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: SomeAttribute
b: SomeAttribute
c: SomeAttribute
d: SomeAttribute

答案 1 :(得分:3)

是的,有可能:

[SomeAttribute]
public int m_nVar1, m_nVar2;

(但显然只有类型相同时)

<强> REFERENCE

示例:

[ContextStatic]
private float a, b, c, d;

答案 2 :(得分:0)

我认为你不能以任何方式使用视觉工作室。

我能想到的最烦人的方法是使用MultiEdit放置多个游标,只编写一次属性。