次のような最小限の C# クラスがあるとします。
class Thing
{
private float a, b, c, d;
(...)
}
4 回書き出すことなく、4 つのフィールドすべてに属性を適用する方法はありますか? [SomeAttribute]
の前に置くと、 のみprivate
に適用されるように見えますa
。
次のような最小限の C# クラスがあるとします。
class Thing
{
private float a, b, c, d;
(...)
}
4 回書き出すことなく、4 つのフィールドすべてに属性を適用する方法はありますか? [SomeAttribute]
の前に置くと、 のみprivate
に適用されるように見えますa
。
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: いくつかの属性
はい、可能です:
[SomeAttribute]
public int m_nVar1, m_nVar2;
(ただし、明らかに型が同じ場合のみ)
例:
[ContextStatic]
private float a, b, c, d;
ビジュアルスタジオを使用してそれを達成できるとは思いません。
私が考えることができる最も面倒な方法は、複数のカーソルを配置できるMultiEditを使用し、属性を一度だけ書き込むことです。