【问题标题】:Invoke classes of another project without adding reference [duplicate]调用另一个项目的类而不添加引用[重复]
【发布时间】:2017-03-16 23:01:00
【问题描述】:

我有一个场景,我需要从项目 A 调用项目 B 中存在的类。由于循环引用问题,我无法在 A 中添加 B 的引用。

有没有办法在不添加引用的情况下调用另一个函数中存在的类?

【问题讨论】:

  • 如果您遇到这种情况,您需要思考为什么会发生这种情况,并可能重构您的代码。
  • 重构这需要时间 - 这就是你遇到这种情况的原因
  • 问问和你一起玩过的建筑师:)
  • 如果您将使用一些“hacky”解决方法来解决此问题,那么稍后您将面临另一个更复杂的问题,您需要再次考虑一些解决方法。
  • 软件工程第一定律:只有在那之后才能完成 = 永远不会完成

标签: c# .net


【解决方案1】:

解决方案的关键在于:due to circular reference issue 这意味着您应该将逻辑分离到第三个程序集,以便添加引用。

【讨论】:

  • 当然可以,但是现在不可能,因为我的解决方案中有 30 个项目,重构需要时间。但是我的截止日期很紧。
  • 那么你不能在截止日期前交付那部分,或者你必须移动截止日期。不可能的事情是不可能的。
  • 你能把这两个程序集合并为一个吗?其他所有选项(例如反射等)都会使您的问题变得更糟。
【解决方案2】:

这是不可能的,可能需要在以下方向之一进行重构:

  • 将两个“需要相互引用”的项目合并为一个更大的项目。可能的缺点:一个庞大的项目,包含太多,或有太多责任,或混合层(例如 DAL、BL)。特别是如果它一开始就涉及 2 个以上的项目。
  • 将冲突部分从 proj1、2 ... n 中移出,并移到新的 projX 中。然后从 proj1, 2 ... n 中引用 projX。
  • 识别interfaces,然后再次将它们放在像projX 这样的中心位置。使 proj1, 2 ... n 中的所有内容(或冲突项)都从接口继承。使用接口类型而不是对象类型来传递对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多