我有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中,然后在运行时动态链接我想要的程序集。但那种方式会破坏界面的目的吗?
答案 0 :(得分:6)
不,这不是一个糟糕的解决方案。
事实上,最好将通用逻辑移入自己的程序集中。这节省了代码重复和维护成本。
您还应该考虑将其他三个项目中常见的逻辑移动到新的程序集中。
我们的设置类似于您所描述的内容。我们有一个在3个小应用程序之间共享的Common程序集,这也有业务验证(政府)规则。在所有三个应用程序中更新规则非常简单,因为它只在一个地方。
答案 1 :(得分:3)
这不是最好的解决方案,但根据你提到的几个概念:
如果这样做,这是一个可接受的解决方案。但这是一个好的解决方案,它取决于您的业务资源。因此,请尝试提出以下问题:
你有足够的时间提取而不破坏你需要在不同项目之间共享的其他任何东西吗?
这涉及多少风险?这些项目对您的业务有何重要意义?
这一切都值得您投入预算吗?