c# - 默认构造函数是否应该将 NULL 传递给另一个构造函数以创建依赖项?

标签 c# dependency-injection constructor dependencies

我有一堆具有一组依赖关系的类。这个项目的依赖注入(inject)会有点矫枉过正,所以目前我们在很多情况下都有以下模式:

public MyClass() : this(null, null) {}

public MyClass(Dependancy x, Dependancy y)
{
  this.x = x ?? new Dependancy();
  this.y = y ?? new Dependancy();
}

我不喜欢这段代码,但我不太清楚为什么。一个原因是它摆弄了传入的参数,另一个原因是我可能希望参数为 null,并保持为 null。

是否有充分的理由避免/使用这种模式或任何其他模式,或者它基本上只是个人偏好?

最佳答案

你不喜欢它有两个原因:

  • 不需要向其传递 NULL 的参数化构造函数;有第二个无参数构造函数;
  • 拥有第三个类(命名为 Factory,命名为 Container,没关系)注入(inject)那些默认依赖项,与好处相比永远不会过大。

关于c# - 默认构造函数是否应该将 NULL 传递给另一个构造函数以创建依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328016/

相关文章:

c# - 协助打开从 C# VSTO Excel 项目到关闭的 .xlsx 文件的连接(不打开 .xlsx 文件)

c# - 如何调试托管堆中的损坏

javascript - 使用全局对象避免 Angular 依赖注入(inject)

c# - 如何配置 Simple Injector 以在 ASP.NET MVC 中运行后台线程

c# - 我可以在构造函数调用中将对象的状态设置为对象本身吗?

c# - 如何将浮点值从 MySQL 数据库获取到数据表中 | C#

c# - 如何在给定 XmlWriter 的情况下创建 XDocument?

gradle - Quarkus 依赖注入(inject)因 Gradle 库模块中的 bean 失败

java - 在构造函数上声明返回类型不会导致编译错误

C++:构造函数、继承和初始化