使用反射调用dll中的某个方法的时候,当遇到方法的参数为接口类型的参数的时候,如何找到实现这个接口的类?如何去创建这个参数?

解决方案 »

  1.   

    自己写一个配置文件,根据配置文件中对应的dll,路径,去反射对应的接口实现就行了,一个个循环,要是不在同一个dll中还麻烦呢
      

  2.   

    你的意思是说在配置文件中,配置实现接口类的dll路径,然后利用循环找出实现的类?
      

  3.   

    配置文件不是指web.config这个配置文件,我说的配置文件是指的你的接口列表对应的实现类的配置文件如
    <interface>
    <name>IUserDAL</name>
    <modulePath>SqlServerDAL</modulePath> //所在的程序集名称
    <ClassName>SqlServerDAL.UserDALSqlserverDAL</ClassName> //实现类的全称
    </interface>这样你读取到对应的接口,IUserDAL,就可以根据所在程序集名称SqlServerDAL.,类名,SqlServerDAL.UserDALSqlserverDAL,不就可以直接反射,创建一个接口的实现了反射的代码,我想你应该会吧
      

  4.   

    如果你有上面的一个配置文件,能够找到程序集名称,类名,参考最常用的反射,如:
     public static object LocateObject(string path,string className)
            { 
                   return Assembly.Load(path).CreateInstance(className);
            }这样就可以很容易的得到接口的实现了