有 2 个构造函数是正确的,一个用于依赖注入,另一个用于解决注入?

2024-02-26

我的类中有 2 个构造函数:

public class CacheWebServices : ICacheWebService
    {
        public ICache apiConnector { get; set; }

        public CacheWebServices(ICache ApiConnector)
        {
            apiConnector = ApiConnector;
        }

        public CacheWebServices()
            : this(new VuelingCache())
        { }
    }

正如您所看到的,我有一个依赖于 IVuelingCache 的构造函数和一个默认构造函数,该默认构造函数创建一个实例以传递给第一个构造函数。这是对的吗?这样我就摆脱了工厂类。


这是确保您拥有有效实例的一种方法IVuelingCache- 这种模式有一个名字 - 穷人的依赖注入。

Some http://lostechies.com/chadmyers/2009/07/14/just-say-no-to-poor-man-s-dependency-injection/ see http://lostechies.com/jimmybogard/2009/07/03/how-not-to-do-dependency-injection-in-nerddinner/ this http://blog.jonathanoliver.com/2009/07/poor-man%E2%80%99s-dependency-injection-take-42-action/作为反模式,因为您将“默认”实现硬编码到代码中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有 2 个构造函数是正确的,一个用于依赖注入,另一个用于解决注入? 的相关文章

  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 如果在构造函数中使用 super 调用重写方法会发生什么

    有两个班级Super1 and Sub1 超1级 public class Super1 Super1 this printThree public void printThree System out println Print Thre
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 无法将参数从 `const char *` 转换为 `char *`

    鉴于此代码 void group build int size std string ips Build the LL after receiving the member list from bootstrap head new memb
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 'iter' 的名称查找已更改为新的 ISO 'for' 范围

    我正在尝试编译下面的两个文件 但从编译器收到错误消息 gcc 4 3 3 Linux 错误位于带有以下符号的行 LINE WITH ERROR 我做错了什么 我该怎么改变 路易斯 g c b h b cpp b cpp In functio
  • 如何重用具有稍微不同的 ProcessStartInfo 实例的 Process 实例?

    我有以下开始的代码robocopy https technet microsoft com en us library cc733145 aspx as a Process 我还需要进行数据库查询以确定每次需要复制哪些目录robocopy被
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用

随机推荐

  • 设置从磁盘加载的背景图像

    我想在运行时更改 QFrame 背景 但是 我会从磁盘 图像 加载背景 在 QFrame 中设置样式表不起作用 因为图像不在资源中 一种方法是设置 QPushButton 图标 例如 QPixmap img images 01 png ui
  • JMeter:为单个用户触发多个并发 HTTP 请求

    我有一个带有线程组和 Cookie 管理器的 JMeter 负载测试脚本 线程组中的用户首先使用HTTP采样器登录来获取cookie 然后 循环控制器触发交错采样器 该采样器在几个向服务器发出查询的 HTTP 采样器之间交替 现在 我希望交
  • Delphi:更好的设计以避免循环单元引用?

    我在 Delphi 10 中有一个三角形网格结构 出于性能原因 我将网格顶点 三角形面等的数据存储在 TList 的后代中 我让 TList 为列表中的每个成员进行计算 对于这些计算 我需要访问 TMesh 结构的某些字段 因此 在创建 T
  • SVG - 从窗口坐标到ViewBox坐标

    基本上我有一个 svg SecondSVG 到一个 svg FirstSVG 到一个 svg MainSVG 每个 svg 都有自己的 ViewBox 该页面可以由另一个页面加载到屏幕上的任何位置 那么基本上我如何找到 SecondSVG
  • 单击时填充 HTML 下拉列表

    我有一个包含多个 HTML 的页面select下拉菜单 并且需要人口onclick的元素 此填充是通过在单击事件侦听器中使用 AJAX 调用完成的select元素 原因是性能和负载非常关键 因此不能在页面加载时填充它们 另外 设计must使
  • 在默认构造函数或内联初始化变量之间有区别吗? [复制]

    这个问题在这里已经有答案了 我在 Java 中发现了一些相关问题 但没有找到与 C 相关的问题 因此请原谅任何重复的问题 又短又甜 有什么区别 有没有 public static class Foo public static List
  • 与 if 语句中的字符串进行比较不起作用

    我尝试比较从 scanf 和 fscanf 获得的两个字符串 我已经弄清楚每个变量里面的内容是什么 它都显示相同的字符串 但是当我在 if 语句中与这两个字符串进行比较后 它不起作用并执行 else 语句 我的代码有什么问题吗 int ma
  • 如何使 jetty-maven-plugin 部署从存储库检索的战争?

    我正在为一个大型网络项目设置一个集成测试模块 集成测试模块与Web项目本身分离 并且有自己的pom xml 这个想法是使用 maven soapui plugin 发送请求并验证响应 设置soapui插件并不麻烦 但是 我无法弄清楚如何告诉
  • 如何在wpf中的用户控件中使用命令绑定?

    在主窗口中 命令绑定工作正常 在 UserControl 1 中它不起作用 请注意 数据上下文设置正确 作为绑定结果的按钮内容证明了这一点 我并不是试图将用户控件中的命令绑定到主窗口中的命令或任何其他此类技巧 我只是想复制我在 UserCo
  • 使用Git推送部署项目

    是否可以使用部署网站git push 我有预感这与使用有关git钩子 http www git scm com book en v2 Customizing Git Git Hooks执行一个git reset hard在服务器端 但我将如
  • 如何在 PHP 中定义空对象

    使用新数组我这样做 aVal array aVal key1 var1 something aVal key1 var2 something else 对象是否有类似的语法 object oVal oVal gt key1 gt var1
  • MySQL 使用双左连接更新行,限制第一个匹配

    我有三张桌子 SQLFiddle 已创建表 http sqlfiddle com 9 a3dab 橙色文本是我需要通过比较 Products name 与 Filters filter 获得的内容 我发现子字符串匹配可以这样完成 on Pr
  • 在 Rails 操作中解析 windows-1252 参数

    我的 API 正在接收一个在 POST 正文中包含 windows 1252 编码数据的调用 在 Rails 6 0 3 中 这显然有效 但是rails 6 1 1抛出ActionController BadRequest 无效的请求参数
  • 流中的异常未被捕获

    我有一个 kotlin 流程 其中中途抛出异常 无论我做什么 异常都不会被捕获 流程是这样的 在视图模型中 我有一个值 需要在日期更改时从数据库中重新读取 我为此使用了 switchmap val branches LiveData
  • 是否有 Scheduler/Calendar JS Widget 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一些基于 JavaScript 的组件用作课程安排程序 这将是 Google 日历和登录时间之间的交叉 我不知道正确的术语是课程
  • 防止快速单击按钮时导航两次

    我正在使用反应导航 并且希望防止当用户快速点击 单击按钮时导航到同一屏幕两次 这是我的减速器 export const navReducer state initialState action gt let nextState switch
  • 在 Android 上使用 Java AWS SDK 与 Android AWS SDK

    构建应用程序时是否可以使用 Java AWS SDK 而不是 Android AWS SDK 无论哪种方式 Java 都是所使用的底层技术 我希望使用 Android 版本的 SDK 中不提供的一些服务 AWS Java SDK 和 AWS
  • 我尝试使用 sort() 对数组进行排序,但失败

    if GET value moto array array 1 gt Yamaha array array 2 gt Suzuki array array 3 gt Triumph array array 4 gt KTM array ar
  • 在 VBA 代码中创建 PDF 文件会导致 Access 崩溃/关闭

    我有一个 MS Access 2016 应用程序 其中包含需要保存为 PDF 文件的报告 每当用户按下执行 PDF 输出的按钮时 应用程序就会在没有警告的情况下关闭 崩溃 知道什么可能导致这种情况吗 按下按钮调用的 VBA 代码如下所示 D
  • 有 2 个构造函数是正确的,一个用于依赖注入,另一个用于解决注入?

    我的类中有 2 个构造函数 public class CacheWebServices ICacheWebService public ICache apiConnector get set public CacheWebServices