【发布时间】:2019-03-23 15:26:45
【问题描述】:
我正在使用 .NET Core 构造函数注入。 在一位同事的代码审查中,他提出了我是否应该检查控制器中注入依赖项的空值的问题。
由于框架负责创建服务的实例,在我看来,它会处理任何错误,并且永远不会将空值依赖项传递给构造函数。不过,我没有任何事实证据,所以我想知道是否可能需要进行空检查。
例如,我是否应该检查以下代码中的“myService”是否为空? (假设代码配置为使用 DI)
public class MyController
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
}
【问题讨论】:
-
这也是我的怀疑,但你能链接到文档或其他验证这一点的来源吗?
-
@CamiloTerevinto 这并不意味着可以永远传入一个空实例,对吗?如果不是来自 IOC 容器,手动实例化可能为空。我一直只是检查 null 并抛出 ArgumentNullException 以确保安全
-
@CamiloTerevinto 它是反 DI,我从不手动实例化任何东西。 但是没有办法以编程方式强制执行。我不认为为了安全而进行检查会伤害或占用任何重要的处理能力
-
@CamiloTerevinto:让我们假设不是每个人都做得很完美。这只在协作多任务、裸指针、未检查的数组边界、期望每个分配后都有一个 dealloc 等方面失败了。;)
-
... manual instantiation would never make it through code reviews and common sense即使在单元测试中?
标签: c# dependency-injection .net-core constructor-injection null-check