假设我有一个最小的C#类,如下所示:应用一个C#属性到很多领域
class Thing
{
private float a, b, c, d;
(...)
}
有没有办法,我可以申请的属性,而无需编写所有四个领域的一种方式它四次?如果我将[SomeAttribute]
放在private
的前面,它似乎只适用于a
。
假设我有一个最小的C#类,如下所示:应用一个C#属性到很多领域
class Thing
{
private float a, b, c, d;
(...)
}
有没有办法,我可以申请的属性,而无需编写所有四个领域的一种方式它四次?如果我将[SomeAttribute]
放在private
的前面,它似乎只适用于a
。
是的,这是可能的:
[SomeAttribute]
public int m_nVar1, m_nVar2;
(但显然只有在类型相同)
例子:
[ContextStatic]
private float a, b, c, d;
当然,你可以包括你从[romkyn的回答](http://stackoverflow.com/a/10726024/146622)复制这个逐字。 – Virtlink 2013-04-24 10:33:25
最好是发布链接而不是复制整个答案。看到这个讨论http://meta.stackexchange.com/questions/78658/is-it-okay-to-copy-paste-answers-from-other-questions – 2013-04-24 10:34:44
你是对的,当然。我认为它只适用于第一个,但我误解了编译器的错误信息。谢谢。 – peterpi 2013-04-24 10:35:24
我不认为你可以以任何方式使用visual studio获得成就。
我能想到的最不讨厌的方式是使用MultiEdit,您可以在其中放置多个游标,并且只写入一次属性。
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
你是对的,谢谢。我误解了我的项目中其他地方的错误消息:( – peterpi 2013-04-24 10:37:09
可能的重复问题:http://stackoverflow.com/questions/10725998/can-you-apply-a-attribute-to-multiple -fields-in-c – Javiere 2013-04-24 10:21:20
为什么不直接声明每个变量? – havardhu 2013-04-24 10:21:49
如果您最终完全写出来,请先使用Alt + Shift + Down 4次。它会选择4行并克隆你输入的内容,实际上可以省掉4次。 – James 2013-04-24 10:23:22