4

次のような最小限の C# クラスがあるとします。

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

4 回書き出すことなく、4 つのフィールドすべてに属性を適用する方法はありますか? [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

ビジュアルスタジオを使用してそれを達成できるとは思いません。

私が考えることができる最も面倒な方法は、複数のカーソルを配置できるMultiEditを使用し、属性を一度だけ書き込むことです。

于 2013-04-24T10:22:48.827 に答える