我一个dll文件的类里面有事件,请问我如果想通过动态加载这个dll,那怎么定义这个事件呢?
另外我想先定义一个应用域
AppDomain load = AppDomain.CreateDomain("temp3");
LoadDll loadDll = (LoadDll)load.CreateInstanceFromAndUnwrap("ProgressTransfer.dll","newTransporter.ProgressTransfer");
但是这个代码运行的时候怎么都通不过,说找不到那个类的构造函数,我那个类有一个带有参数的构造函数啊(我有个另外有个dll里面的类也是只有个带参数的构造函数,也是这样写就没有问题),
后来我又在那个类加了个没有参数的构造函数,运行的时候又提示指定的转换无效。
是不是因为我那个类定义了delegate啊?难道定义了delegate或者事件的就不能创建应用域?不能动态加载吗?我对这方面比较陌生,诚心请教,最好能讲详细一些!
谢谢!
另外我想先定义一个应用域
AppDomain load = AppDomain.CreateDomain("temp3");
LoadDll loadDll = (LoadDll)load.CreateInstanceFromAndUnwrap("ProgressTransfer.dll","newTransporter.ProgressTransfer");
但是这个代码运行的时候怎么都通不过,说找不到那个类的构造函数,我那个类有一个带有参数的构造函数啊(我有个另外有个dll里面的类也是只有个带参数的构造函数,也是这样写就没有问题),
后来我又在那个类加了个没有参数的构造函数,运行的时候又提示指定的转换无效。
是不是因为我那个类定义了delegate啊?难道定义了delegate或者事件的就不能创建应用域?不能动态加载吗?我对这方面比较陌生,诚心请教,最好能讲详细一些!
谢谢!
public sealed class SearchWorker : AsyncOperation
{
public delegate void MatchEvent(string name);
public event MatchEvent Match;
//
} 外面定义事件并传入函数:
currSearch.Match += new SearchWorker.MatchEvent(Search_Result);
Type t = assembly.GetType("動態加載.Dll");
Type t = assembly.GetType("yourclass");
EventInfo event = t.GetEvent("eventname");
ConstructorInfo CI = t.GetConstructor( new type[]{typeof(参数类型,.....)});
object o = CI.Invoke(object[]);
event.AddHandler( o , event delegate )