【发布时间】:2015-05-14 09:14:15
【问题描述】:
我是这个领域的新手,所以欢迎任何帮助。
所以我有这个匿名对象(不确定它的正确名称):
var ERRORS = new
{
ERROR = new Func<bool>(() =>{ return true; })
, ERROR1 = new Func<bool>(() => { return true; })
, ERROR2 = new Func<bool>(() => { return true; })
, ERROR3 = new Func<bool>(() => { return true; })
, ERROR4 = new Func<bool>(() => { return true; })
, ERROR5 = new Func<bool>(() => { return true; })
, ERROR6 = new Func<bool>(() => { return true; })
, ERROR7 = new Func<bool>(() => { return true; })
, ERROR8 = new Func<bool>(() => { return true; })
, ERROR9 = new Func<bool>(() => { return true; })
, ERROR10 = new Func<bool>(() => { return true; })
, ERROR11 = new Func<bool>(() => { return true; })
, ERROR12 = new Func<bool>(() => { return true; })
};
我想遍历这个对象的属性并像函数一样调用它们。
到目前为止,我已经编写了这段代码:
Type type = ERRORS.GetType();
MethodInfo[] properties = type.GetMethods();
foreach (MethodInfo property in properties)
{
Delegate del = property.CreateDelegate(typeof(System.Func<bool>));
Console.WriteLine("Name: " + property.Name + ", Value: " + del.Method.Invoke(ERRORS,null));
}
这段代码是我在网上找到的,做了一些调整,但抛出异常:
“无法绑定到目标方法,因为它的签名或安全透明度与委托类型的不兼容。”
这对我来说意义不大。
如前所述,我是 C# 方面的优秀菜鸟,因此我们将不胜感激。
【问题讨论】:
-
真的有必要使用匿名类型+反射吗?为什么不是 Func
的数组? -
可以正常工作,但仍然必须调用它们。我做错了:)
标签: c# delegates system.reflection anonymous-class