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

时间:2018-03-01 09:06:57

标签: c# dependency-injection simple-injector

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

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

我正在注册类似

的空值类型
container.Register<IDataProtectionProvider>(() => null);

但它给了我错误

  

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

任何帮助

1 个答案:

答案 0 :(得分:0)

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

您应该传入Null Object

,而不是传入null
  

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

示例:

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