两个项目,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接口
请高手们指点,不知道我阐述的是否明白
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接口
请高手们指点,不知道我阐述的是否明白
首先,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
是不是你反射的时候疏忽了什么地方,
另外这个设计不太好,依赖关系处理的不得当
我想问下,我是在B项目中右键添加现有项 加的A项目中的接口文件Iapp,不知道这样是否正确?这是我唯一觉得可能有问题的地方
你可以试试引用b.dll,看看效果
我只是在A项目中加了个接口文件(Iapp),接口文件随着A项目一起编译,所以没有单独的dll,而且两个项目都是应用程序的。我也在疑惑,如何定义接口,让多个项目能同时映入,各位请指教
把iapp单独提出来,双方同时引用它