一个类有一个以IMyInterface为参数的独特构造函数。如果我定义了IMyInterface的具体类型并将其注册到StructureMap,那么就没有问题,我的类可以通过这个具体类型来实例化。如何使用StructureMap将默认构造函数参数设置为null?
但是,在某些情况下,没有具体的类型将被注册。在这种情况下,我想为IMyInterface参数收到null。相反,我得到一个异常:
StructureMap异常代码:202 没有默认实例为PluginFamily IMyInterface定义。
是否可以为缺少的插件定义默认值?
上下文:我的类是一个服务,它使用Spark视图引擎并定义一些默认名称空间。该服务使用ISparkNamespacesProvider(IMyInterface)添加辅助名称空间。客户端应用程序可以注册这样的提供者或不注册。这就是为什么该服务的构造函数将收到提供者或没有提供者。
null必须转换为IMyInterface以避免模糊的调用。不幸的是它不起作用。当我定义一个具体类型并将其注册到SM时,null仍然通过。所以看起来你的代码并没有定义一个默认参数,而是这个参数的强制值。如果我删除你的代码,则使用具体类型。 – 2010-10-06 21:33:30
@Nicolas在配置中只应该指定一个具体的实现。否则 - 你的设计很可能是错误的。 – 2010-10-06 21:35:55
@Nicolas也许你可以在这里发布需要'IMyInterface'的类吗?构造函数和使用'IMyInterface'的部分。 – 2010-10-06 21:37:37