C# 将C属性应用于多个字段
假设我有一个最小的C类,如下所示:C# 将C属性应用于多个字段,c#,C#,假设我有一个最小的C类,如下所示: class Thing { private float a, b, c, d; (...) } 有没有一种方法可以将属性应用于所有四个字段而不必写四次?如果我将[SomeAttribute]放在private前面,它似乎只适用于a。我认为使用visual studio无法以任何方式实现这一点 我能想到的最不烦人的方法是,在可以放置多个游标的地方使用,并且只写一次属性。是的,有可能: [SomeAttribute] public int m_n
class Thing
{
private float a, b, c, d;
(...)
}
有没有一种方法可以将属性应用于所有四个字段而不必写四次?如果我将[SomeAttribute]放在private前面,它似乎只适用于a。我认为使用visual studio无法以任何方式实现这一点 我能想到的最不烦人的方法是,在可以放置多个游标的地方使用,并且只写一次属性。是的,有可能:
[SomeAttribute]
public int m_nVar1, m_nVar2;
但显然只有当类型相同时
例如:
[ContextStatic]
private 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
可能重复的问题:为什么不单独声明每个变量呢?如果您最终完全写出它,请先使用Alt+Shift+Down 4次。它将选择4行并克隆您键入的内容,将您实际键入的内容保存4次。当然,您可以包括您从中逐字复制的内容。最好发布链接,而不是复制整个答案。看看这个讨论,你当然是对的。我以为它只适用于第一个,但我误解了来自编译器的错误消息。谢谢,你说得对,谢谢。我误解了项目中其他地方的错误消息: a: SomeAttribute b: SomeAttribute c: SomeAttribute d: SomeAttribute