给定一个包含的程序集
namespace Foo{public class Bar;}
我怎么能创建一个Action< Foo.Bar>从另一个程序集编译时没有引用第一个程序集?
解决方法
如果你使用
Type barType = Type.GetType("Foo.Bar,whateverassembly"); Type actionType = typeof(Action<>).MakeGenericType(barType);
actionType现在将代表Action< Foo.Bar>.但是,要使用它,您需要使用反射,因此您需要找到适合签名void(Foo.Bar)的MethodInfo,并调用Delegate.CreateDelegate来创建委托.你需要Delegate.DynamicInvoke来执行它.
Delegate call = Delegate.CreateDelegate(actionType,...); ... call.DynamicInvoke(someBar);
有些东西告诉我,这不是你想的……