C# dotNet类库也应该只公开接口或实现

C# dotNet类库也应该只公开接口或实现,c#,architecture,C#,Architecture,我边走边自学,是我们组织中唯一的开发者。我已经开始将特定任务拆分为类库,以便随着组织需求的增长,我可以重用这些代码 我倾向于在类库中包含for,例如IMailingThingie和MailingThingie,因为当我添加对库的引用时,这两个问题都得到了解决 我也觉得这减少了代码的重复,但也导致了一些跳跃(例如,适应每日邮件处理规则和每月邮件处理规则) 仅公开类库中的接口并逐个项目地对实现进行编码是更好的做法吗 我正在使用C#dotNet,但我想这一级别的架构决策是语言中立的 SolutionR

我边走边自学,是我们组织中唯一的开发者。我已经开始将特定任务拆分为类库,以便随着组织需求的增长,我可以重用这些代码

我倾向于在类库中包含for,例如IMailingThingie和MailingThingie,因为当我添加对库的引用时,这两个问题都得到了解决

我也觉得这减少了代码的重复,但也导致了一些跳跃(例如,适应每日邮件处理规则和每月邮件处理规则)

仅公开类库中的接口并逐个项目地对实现进行编码是更好的做法吗

我正在使用C#dotNet,但我想这一级别的架构决策是语言中立的

SolutionRoot1
--ClassLibrary
----IMailing
----Mailing
--Project1
----Reference
--Project2
----Reference


如果这会导致代码重用,那么最好共享实现。如果您因为不同的业务规则而遇到困难,那么您应该考虑继承,以允许您共享基础知识,并允许每个项目定义细节

最好的做法是理解共享接口和共享实现之间的区别,以便您可以根据问题选择最佳解决方案

SolutionRoot1
--ClassLibrary
----IMailing
--Project1
----Reference
----Mailing
--Project2
----Reference
----Mailing