日期:2014-05-17  浏览次数:21052 次

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 ()
       {
        }
   }
C#?两个DLL?之间相互应用

------解决方案--------------------
可以使用委托或者接口,将依赖关系转换为单向依赖

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
{
    // 当你实例化这个类的时候,父类构造函数会被调用,然后就会死循环了。
}