我有Validator.sln,A.sln,B.sln,C.sln.
A,B和C是具有不同主要功能的大型项目.我想使用它们的一些逻辑来验证一段数据.
所以,在Validator.sln中,我有一个源文件:
public interface IValidator
{
bool Validate(int myData);
}
Run Code Online (Sandbox Code Playgroud)
我想在A,B和C中实现这个接口. 也就是说,
public Validator : IValidator
{
bool Validate(int myData)
{
bool dataValidates = true;
// Call a bunch of complicated logic
return dataValidates;
}
}
Run Code Online (Sandbox Code Playgroud)
(这不会编译,因为在此上下文中未定义IValidator.)
我可以创建一个从A到Validator的程序集引用,它们大部分是单独的程序. 这是一个糟糕的解决方案?
编辑:
我也可以将AValidator放在Validator.sln中,然后在运行时动态链接我想要的程序集.但那种失败了接口的目的?
不是它不是一个坏的解决方案.
事实上,最好将通用逻辑移入它自己的程序集中.这节省了代码重复和维护成本.
您还应该考虑将其他三个项目中常见的逻辑移动到新的程序集中.
我们的设置与您描述的类似.我们有一个共同的程序集,它在3个小应用程序之间共享,这也有业务验证(政府)规则.跨所有三个应用程序更新规则非常简单,因为它只在一个地方.