我有一个问题: 是否有一种在引用字段上获取属性的优雅方式。 即:
public class C1: Base
{
[MyAttribute]
public string Field1;
}
public class Base
{
private void Do(ref string field)
{
if (field has attributes)
DoSomething();
}
}
如何在方法Do()中获取字段的属性?
提前致谢。
答案 0 :(得分:0)
使用ref string field
签名无法做到这一点。属性应用于声明(字段,类,事件等),而不是“实例”。
你可以做什么,改变你的方法是这样的:
private void Do(Type fieldContainingType, string fieldName, ref string field)
然后使用反射检查fieldContainingType
以查看哪些属性应用于名为fieldName
的字段。然而,这种方法极其脆弱,而且通常非常糟糕。