C# 如何实现两个DLL之间的相互调用
因为需求 必须要写成两个DLL 文件,求高手帮忙,如何完成两个项目间的互相调用?
比如 代码如下:
namespace A
{
class AA()
{
如何在这里实现对 namespace 中AAA的实例化
}
class BB()
{
}
}
//------------------------------------------
using A;
namespace B // B 中已经引用了 A;
{
class AAA():AA //(自namesp A 的AA中继承)
{
}
class BBB ()
{
}
}
------解决方案--------------------可以使用委托或者接口,将依赖关系转换为单向依赖
http://bbs.csdn.net/topics/390619003
------解决方案--------------------定义接口,然后使用工厂模式之类的
------解决方案--------------------可以使用反射或dynamic,不过这不是标准答案。这是临时解,只要你有时间,你应该使用标准的抽象解,解除耦合依赖抽象应该形成习惯。反射和dynamic不过是不得已偶尔为之的手段
------解决方案--------------------可以用反射。程序 build 之后的 dll 都是在同一个目录的,假设你 build 完之后的 dll 是 A.dll 和 B.dll
那么,你可以在 A.dll 中使用反射 Load B 程序集,来反射出相应的类,并使用 ConstructorInfo Invoke 成一个对象。
但是不可放入 AA 的构造函数中,否则将有可能形成死循环导致堆栈溢出!(目测)
class AA
{
public AA()
{
// 实例化 AAA 对象
}
}
class AAA : AA
{
// 当你实例化这个类的时候,父类构造函数会被调用,然后就会死循环了。
}