C# 如何实现两个DLL之间的相互调用

箭神小傲 2013-11-22 05:31:55
因为需求 必须要写成两个DLL 文件,求高手帮忙,如何完成两个项目间的互相调用?
比如 代码如下:
namespace A
{
class AA()
{
如何在这里实现对 namespace 中AAA的实例化
}
class BB()
{
}
}
//------------------------------------------
using A;
namespace B // B 中已经引用了 A;
{
class AAA():AA //(自namesp A 的AA中继承)
{
}
class BBB ()
{
}
}
...全文
1178 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
youzelin 2013-11-26
  • 打赏
  • 举报
回复
引用 8 楼 xiaoao314224236 的回复:
我已经自己想到了办法 ,用不一样的构造函数即可。的确是要防止出现死循环的情况。 7楼提出的方式是动态的载入DLL,其实也是可行的,但是不太想用动态载入。
那你是如何做的,可以分享一下吗?
箭神小傲 2013-11-25
  • 打赏
  • 举报
回复
我已经自己想到了办法 ,用不一样的构造函数即可。的确是要防止出现死循环的情况。 7楼提出的方式是动态的载入DLL,其实也是可行的,但是不太想用动态载入。
youzelin 2013-11-22
  • 打赏
  • 举报
回复
可以用反射。程序 build 之后的 dll 都是在同一个目录的,假设你 build 完之后的 dll 是 A.dll 和 B.dll 那么,你可以在 A.dll 中使用反射 Load B 程序集,来反射出相应的类,并使用 ConstructorInfo Invoke 成一个对象。 但是不可放入 AA 的构造函数中,否则将有可能形成死循环导致堆栈溢出!(目测)

class AA
{
    public AA()
    {
        // 实例化 AAA 对象
    }
}
class AAA : AA
{
    // 当你实例化这个类的时候,父类构造函数会被调用,然后就会死循环了。
}
wanghui0380 2013-11-22
  • 打赏
  • 举报
回复
可以使用反射或dynamic,不过这不是标准答案。这是临时解,只要你有时间,你应该使用标准的抽象解,解除耦合依赖抽象应该形成习惯。反射和dynamic不过是不得已偶尔为之的手段
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
引用 4 楼 xiaoao314224236 的回复:
[quote=引用 2 楼 caozhy 的回复:] 可以使用委托或者接口,将依赖关系转换为单向依赖 http://bbs.csdn.net/topics/390619003
用委托可以实现么?求大神指点[/quote] 可以,留给你自己思考了。
箭神小傲 2013-11-22
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
可以使用委托或者接口,将依赖关系转换为单向依赖 http://bbs.csdn.net/topics/390619003
用委托可以实现么?求大神指点
rtdb 2013-11-22
  • 打赏
  • 举报
回复
定义接口,然后使用工厂模式之类的
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
可以使用委托或者接口,将依赖关系转换为单向依赖 http://bbs.csdn.net/topics/390619003
卧_槽 2013-11-22
  • 打赏
  • 举报
回复
相互是做不到的,那是个死循环。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧