如何将null值传递给简单注入器中的构造函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将null值传递给简单注入器中的构造函数?相关的知识,希望对你有一定的参考价值。

我有一个服务层,两个应用程序使用Web应用程序和窗口服务。我正在使用简单的注射器进行两种应用。

窗口服务不需要Web应用程序中所需的所有构造函数参数。所以我需要为这些构造函数参数传递null值。但是Simple Injector不允许我传递空值。

我正在为这样的空值注册类型

container.Register<IDataProtectionProvider>(() => null);

但它给了我错误

IDataProtectionProvider类型的已注册委托返回null。

任何帮助

答案

Simple Injector不允许将null值传递给构造函数,因为构造函数用于所需的依赖项。

你应该传入一个Null Object,而不是传入null。

在面向对象的计算机编程中,null对象是没有引用值或具有定义的中性(“null”)行为的对象。空对象设计模式描述了这些对象的使用及其行为(或缺乏行为)。它首次发表在“程序设计模式语言”系列丛书中。

例:

container.RegisterSingleton<IDataProtectionProvider>(new NullDataProtectionProvider());

以上是关于如何将null值传递给简单注入器中的构造函数?的主要内容,如果未能解决你的问题,请参考以下文章

将 const char* 传递给构造函数会给出 null

将 NULL 传递给构造函数

踩坑:Spring静态变量/构造函数注入失败(注入为null)问题的解决方案

踩坑:Spring静态变量/构造函数注入失败(注入为null)问题的解决方案

构造函数不将初始数组值传递给方法

无法从构造函数中将数组值传递给向量