我一个dll文件的类里面有事件,请问我如果想通过动态加载这个dll,那怎么定义这个事件呢?
另外我想先定义一个应用域
AppDomain load = AppDomain.CreateDomain("temp3");
LoadDll loadDll = (LoadDll)load.CreateInstanceFromAndUnwrap("ProgressTransfer.dll","newTransporter.ProgressTransfer");
但是这个代码运行的时候怎么都通不过,说找不到那个类的构造函数,我那个类有一个带有参数的构造函数啊(我有个另外有个dll里面的类也是只有个带参数的构造函数,也是这样写就没有问题),
后来我又在那个类加了个没有参数的构造函数,运行的时候又提示指定的转换无效。
是不是因为我那个类定义了delegate啊?难道定义了delegate或者事件的就不能创建应用域?不能动态加载吗?我对这方面比较陌生,诚心请教,最好能讲详细一些!
谢谢!

解决方案 »

  1.   

    Assembly ass = Assembly.LoadFrom();
      

  2.   

    用System.Reflection.Assembly 或者 Activator 应该满足你
      

  3.   

    参照:http://community.csdn.net/Expert/TopicView3.asp?id=5115533
      

  4.   

    上面那些朋友说的都讲的是普通的加载dll,这个我会了,但是就不知道到底怎样把dll里面的事件绑定到外面的类的函数上
      

  5.   

    反射出类,就可以定义里面的事件,并且传入外面的处理函数例如dll里面一个类:
        public sealed class SearchWorker : AsyncOperation
        {
            public delegate void MatchEvent(string name);
            public event MatchEvent Match;
            //
        }    外面定义事件并传入函数:
        currSearch.Match += new SearchWorker.MatchEvent(Search_Result);
      

  6.   

    请问AsyncOperation这个是干什么的?一定要继承这个类吗?
      

  7.   

    Assembly assembly = Assembly.LoadFrom("動態加載.dll");
    Type t = assembly.GetType("動態加載.Dll");
      

  8.   

    Assembly assembly = Assembly.LoadFrom(your.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 )