以这种方式在项目之间创建引用是一种不好的做法吗?

本文关键字:一种 方式 项目 之间 引用 创建 | 更新日期: 2023-09-27 18:36:44

I 有 Validator.sln, A.sln, B.sln, C.sln.

A、B 和 C 是具有不同主要功能的大型项目。 我想使用他们的一些逻辑来验证一段数据。

所以,在Validator.sln中,我有一个源文件,其中包含:

public interface IValidator
{
    bool Validate(int myData);
}

我想在 A、B 和 C 中实现此接口。 那是

public Validator : IValidator
{
    bool Validate(int myData)
    {
        bool dataValidates = true;
        // Call a bunch of complicated logic
        return dataValidates;
    }
}

(这不会编译,因为在此上下文中未定义 IValidator。

我可以创建从 A 到 Validator 的程序集引用,它们在大多数情况下是单独的程序。 这是一个糟糕的解决方案吗?

编辑:

我还可以将 AValidator 放在 Validator.sln 中,然后在运行时动态链接我想要的程序集。 但是这违背了界面的目的?

以这种方式在项目之间创建引用是一种不好的做法吗?

不,

这不是一个糟糕的解决方案。

事实上,最好将通用逻辑移动到它自己的程序集中。这节省了代码重复和维护成本。

您还应考虑将其他三个项目中通用的逻辑也移动到新程序集中。

我们的设置与您描述的类似。我们有一个在 3 个小应用程序之间共享的公共程序集,并且还具有业务验证(政府)规则。跨所有三个应用程序更新规则非常简单,因为它只在一个地方。

这不是一个最好的解决方案,但根据你提出的几个概念:

  • 其他都是大项目
  • 可能它们不完全是你写的

如果这有效,这是一个可接受的解决方案。但这是否是一个好的解决方案,这取决于您的业务资源。因此,请尝试提出以下问题:

  • 您是否有足够的时间在不破坏任何其他内容的情况下提取您需要在不同项目之间共享的部分?

  • 这涉及多大的风险?这些项目对您的业务有多关键?

  • 这一切都值得你付出估计的努力吗?

祝你好运。