none
反射实现接口遇到的问题 RRS feed

  • 问题

  • 在程序A中定义了一个接口,现在想用反射的方法加载另一个程序集B,并使用其中的一个类来实现此接口。

    我开始的做法是在A中定义接口,然后将同样的定义语句放在B中,并在B中的一个类声明实现接口。

    但反射创建实例实现接口时提示不能进行类型转换。

    我该如何做才能实现这个功能?

    2010年5月29日 7:08

答案

  • 你好!

         即使你在不同的程序集中定义了同名的接口,比如像你上面提到的方式,将同样的定义语句放在B中,那编译器认为这是两个不同的接口,所以你应该把接口定义放在单独的dll中,然后两个程序集都引用这个dll。


    周雪峰
    • 已标记为答案 Bunliney 2010年5月31日 12:47
    2010年5月29日 10:38
    版主

全部回复

  • 你好!

         即使你在不同的程序集中定义了同名的接口,比如像你上面提到的方式,将同样的定义语句放在B中,那编译器认为这是两个不同的接口,所以你应该把接口定义放在单独的dll中,然后两个程序集都引用这个dll。


    周雪峰
    • 已标记为答案 Bunliney 2010年5月31日 12:47
    2010年5月29日 10:38
    版主
  • 程序A与程序B是不在同文件夹下的,都引用单独的一个dll会比较麻烦,有没有什么好的方法?
    2010年5月29日 11:52
  • 你好!

         这是目前比较普遍的做法,实际上两个程序集通过接口实现交互,也只能这么做!


    周雪峰
    2010年5月29日 13:12
    版主