两个项目,A和B, 
A里面定义了接口(Iapp)和一个类AClass实现该接口, 
AClass : Iapp
{
 //AClass中动态加载BClass, 并想把本身实例传递给BClass中的接口变量 **.GetProperty(iapp).SetValue(class,this, null);
   
}
项目B中有个BClass类,类里面声明了一个接口变量(Iapp _iapp)和属性iapp
BClass
{
    Iapp _iapp;
    public Iapp iapp
    {
       get{return _iapp;}
       set{_iapp = value;}
    }
}
但运行时报错说 类AClass无法转换为Iapp接口 
请高手们指点,不知道我阐述的是否明白

解决方案 »

  1.   

    从你的描述如LS所说没有什么问题,我也试着写了一下,
    首先,ClassLibrary1中定义Class1继承IApppublic interface IApp {
    void DoWork();
    }public class Class1 : IApp {
    public void DoWork() {
    Console.WriteLine("DoWork from Class1");
    } public void Register(object arg) {
    arg.GetType().GetProperty("App").SetValue(arg, this, null);
    }
    }
    然后再一个Console,class Program {
    public IApp App { get; set; } static void Main(string[] args) {
    Program p = new Program();
    Class1 c = new Class1();
    c.Register(p);
    p.App.DoWork(); Console.WriteLine("press any key to exit.");
    Console.ReadLine();
    }
    }最后输出DoWork from Class1
    是不是你反射的时候疏忽了什么地方,
    另外这个设计不太好,依赖关系处理的不得当
      

  2.   

    我也是新接触C# ,对很多东西不太熟,设计肯定是有点欠缺,可能对概念还是不太了解,也不知道问题在哪里。反射应该没有问题,因为不给BClass设置接口属性时,程序可以运行,(我这里是BClass是个页面,AClass用来加载B)
      

  3.   

    不好意思,昨天发完就下班了。
    我想问下,我是在B项目中右键添加现有项 加的A项目中的接口文件Iapp,不知道这样是否正确?这是我唯一觉得可能有问题的地方
      

  4.   

    情况大概是这样: A项目A类(page)要加载B项目B类,并且A类定义了一些方法供B类调用,现在就是定义了一个接口Iapp(Iapp在A项目中定义,A类继承实现了Iapp中的方法,还实现A项目中需要的一些方法),A类中反射B类,并且要把A类对象this赋值给B类中定义的接口属性,但运行出错提示A类不能转换为Iapp接口。各位高手再帮看看,或者给点其他的解决方法也行
      

  5.   

    应该是此iapp 非彼 iapp,因为此IAPP 是随b 类动态 加载进来的,同一个dll,不同的加载,是不在同一个应用程序域中的
    你可以试试引用b.dll,看看效果
      

  6.   


    我只是在A项目中加了个接口文件(Iapp),接口文件随着A项目一起编译,所以没有单独的dll,而且两个项目都是应用程序的。我也在疑惑,如何定义接口,让多个项目能同时映入,各位请指教
      

  7.   

    试试
    把iapp单独提出来,双方同时引用它