【发布时间】:2012-08-26 15:22:10
【问题描述】:
我希望能够在运行时执行以下等效操作:
var action = new Action<ANYTHING AT RUNTIME>(obj => Console.WriteLine("Called = " + obj));
我知道我需要为 Action 获取正确的类型,但不确定如何使用 Delegate.Create 获取最终位。 Type 代表 Action 定义中的 T。
var actionType = typeof(Action<>).MakeGenericType(Type);
var constructor = actionType.GetConstructors()[0];
var @delegate = Delegate.CreateDelegate(actionType, <WHAT GOES HERE>);
人们似乎缺少的一点是我正在尝试创建一个 Action 的实例,其中 T 不能静态指定,因为它是从派生自 Attribute 的类中使用的 - 这意味着 T 可以是任何东西,它不能被定义为泛型定义
干杯
【问题讨论】:
-
你想动态生成
action = new Action<int>(obj => Console.WriteLine("Called = " + obj));的哪一部分? -
我要创建\初始化参数'action'
-
我很困惑。没有名为
action的参数。你想达到什么目标? -
简单你如何在运行时创建一个Action
的实例,当T只在运行时知道,你不能静态推断它 -
如果你在 .NET 4 上,你可以试试 Action
标签: c# .net generics reflection delegates