4

我有 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 中,然后在运行时从 A 动态链接我想要的程序集。但这是否违背了界面的目的?

4

2 回答 2

6

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

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

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

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

于 2013-10-24T21:23:18.343 回答
3

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

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

如果这可行,这是一个可接受的解决方案。但这是否是一个好的解决方案,这取决于您的业务资源。所以试着问以下问题:

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

  • 这涉及多少风险?这些项目对您的业务来说有多重要?

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

祝你好运。

于 2013-10-24T21:24:57.803 回答