有一个类库,对外只暴露了一个接口,而不知道实现这个接口的类的名字。在引用这个类库后,通过反射能不能取得实现了这个接口的类的实例,也就是我要调用这个类实现的接口方法。高手指个路呀!

解决方案 »

  1.   

    这个完全可以的...
    Assembly _Assembly= Assembly.LoadFile("@C:\1.DLL");  //先获取程序集合Type[] _TypeList=Assembly.LoadFile("@C:\1.DLL").GetTypes();  //获取所有类判断哪个是你需要的用System.Activator.CreateInstance(_TypeList[0]); 创建实例
      

  2.   


    参考,判断某个类是否实现了某个接口            Type t = typeof(某个类);
                if (Array.IndexOf(t.GetInterfaces(), typeof(某个接口)) > -1)
                {
                     //实现了
                }
      

  3.   

    哎~ 说什么好呢?
    msdn上照抄就行的事,还来这里问。
      

  4.   

    可以  
    System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(dllPath);
     //获得类型       
    Type type = assembly.GetType(String.Format("{0}.{1}", NameSpacePath, className), false, true);
      //设置筛选标志         
    System.Reflection.BindingFlags bflags = System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance;
     //调用构造函数并获得对象         
     Object obj = type.InvokeMember(className, bflags | System.Reflection.BindingFlags.CreateInstance, null, null, null);
    参考
    参考