如何将开放泛型绑定到null常量
本文关键字:绑定 null 常量 泛型 | 更新日期: 2023-09-27 18:30:03
如何实现以下目标?
Kernel.Bind(typeof(SomeType<>)).ToConstant(null);
这行代码将失败,因为编译器无法根据用法推断null
类型。由于我使用的是开放泛型类型,因此无法将其作为泛型参数传入。
有办法解决这个问题吗?
尽管我看不出这样做的原因,特别是因为我真诚地怀疑ninject是否知道如何解决它,但您可以创建一个null实例并直接绑定到它。
以下编译,但在运行时无法执行您想要的操作:
var kernel = new StandardKernel();
SomeType<int> constant = null;
kernel.Bind(typeof(SomeType<>)).ToConstant(constant);
public class SomeType<T>{ }
它实际上会抛出类似于以下内容的ActivationContext错误:
ActivationException:使用激活SomeType{int}时出错从SomeType{T}到常量值的绑定返回提供程序无效的
所以不,如果你想使用一个常数值,它需要是一个非null值才能成功解析。