我需要将Ninject
转换为SimpleInjector
实施。
我有以下代码
public T Resolve<T>()
{
// IKernel kernel - is the global declaration
return kernel.Get<T>();
}
我想要简单的注射器
的等价物我试过了
public T Resolve<T>()
{
// SimpleInjector.Container kernel - is the global declaration
return kernel.GetInstance<T>();
}
但由于T
不是类,因此抛出错误,因为它是泛型类型。
我无法将该方法强制转换为T
作为类,因为它是一个接口实现。
任何建议?
答案 0 :(得分:2)
在Resolve方法中添加泛型类型约束:
public T Resolve<T>() where T : class
{
return kernel.GetInstance<T>();
}
或调用非泛型GetInstance重载:
public T Resolve<T>()
{
return (T)kernel.GetInstance(typeof(T));
}