c# - 与 SOLID 和依赖注入(inject)混淆

标签 c# .net dependency-injection inversion-of-control solid-principles

所以我正在尝试学习 SOLID 原则和依赖注入(inject)。我已经阅读了一些有关该主题的博客文章,并且开始有所了解。但是,有一种情况我找不到答案,将尝试在这里解释。

我开发了一个库来进行文本匹配,它包含一个类 Matcher有一个叫做 Match 的函数结果返回 MatchResult目的。该对象包含诸如百分比、耗时、是否成功等信息。现在,根据我对依赖注入(inject)的理解,高级类不应该“知道”低级类或模块。所以我已经设置了我的图书馆和Matcher类使用 Matcher 的接口(interface)类,这将允许我使用 IoC 容器注册它。但是,因为该函数返回一个 MatchResult对象,“高级类”必须知道 MatchResult违反 DI 规则的对象。

我应该如何解决这个问题,推荐的方法是什么?

最佳答案

DI 声明使用接口(interface)的类不应该知 Prop 体实现的任何细节。但是,MatchResult 不是实现细节,而是接口(interface)协定的一部分(DTO,Match 方法的返回类型)- 没关系。您可以有一个额外的类以不同的方式实现该 IMatcher 接口(interface),但它仍应返回 MatchResult,就像它预期的那样。

关于c# - 与 SOLID 和依赖注入(inject)混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457179/

相关文章:

c# - 惊人的错误 "The given key was not present in the dictionary."

c# - StructureMap 中的命名实例和默认实例?

scala - 如何使用 Scala 和 Play 2.5.x 在对象中获取 application.conf 变量?

c# - ASP.NET MVC 路由不起作用

c# - 如何在 mvvm 模型中从数据库中保存和检索复选框值?

c# - 我如何对 ICommands 进行分组,以便如果一个正在执行,其他则不能?

c# - 在更新外键字段之前释放 DataContext

.net - 负到-1,0到0,正到1

c# - 如何从 Windows8 商店应用程序中的字节数组获取流

dependency-injection - Ninject 3.0.1.10缺少IKernel.Get