ninject - Simpleinjctor 根据泛型类型获取实例

标签 ninject inversion-of-control ioc-container simple-injector

我需要将 Ninject 转换为 SimpleInjector 实现。

我有以下代码

public T Resolve<T>()
{
    // IKernel kernel - is the global declaration
    return kernel.Get<T>();
}

我想要与简单注入(inject)器等效的东西

我已经尝试过

public T Resolve<T>()
{
    // SimpleInjector.Container kernel - is the global declaration
    return kernel.GetInstance<T>();
}

但这会引发错误,因为 T 不是一个类,因为它是泛型类型。

我无法将该方法强制转换为严格将 T 作为类返回,因为它是一个接口(interface)实现。

有什么建议吗?

最佳答案

向您的 Resolve 方法添加泛型类型约束:

public T Resolve<T>() where T : class
{
    return kernel.GetInstance<T>();
}

或调用非泛型 GetInstance 重载:

public T Resolve<T>()
{
    return (T)kernel.GetInstance(typeof(T));
}

关于ninject - Simpleinjctor 根据泛型类型获取实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167903/

相关文章:

unit-testing - 我可以在单元/集成测试中使用 IoC 容器吗?

c# - WPF 中的 Ninject 构造函数注入(inject)

dependency-injection - ActionFilterAttribute ninject 注入(inject) - DbContext 已被释放

c# - 如何从 Ninject 中的 IContext 中提取有关作为注入(inject)目标的对象的确切类型的信息?

asp.net-mvc - Ninject + ASP.NET MVC + InRequestScope

c# - Ninject 传递实现接口(interface)的类的构造函数参数 typeof

c# - Ninject 属性注入(inject)设置问题

c# - ninject 的循环依赖

c# - 创建整体 IoC 容器

c# - 简单注入(inject)器/IoC - 队列处理器的 Windows 服务和请求周期