使用泛型注册 TinyIoCContainer
TinyIoCContainer registration with generics
我正在使用 .NET Nancy 的 TinyIoCContainer 进行依赖注入。我正在尝试通过泛型注册接口及其实现,如下所示:
Register(container, typeof(IUserService), typeof(UserService));
private void Register<TInterface, TImplementation>(TinyIoCContainer container)
where TInterface : class
where TImplementation : class, TInterface
{
container.Register<TInterface, TImplementation>();
}
这给了我以下异常:
Cannot register type System.Type - abstract classes or interfaces are
not valid implementation types for SingletonFactory.
这表明 SingletonFactory 不能使用泛型。我也试过将类型注册为多实例:
container.Register<TInterface, TImplementation>().AsMultiInstance();
我也遇到了同样的异常。
我能找到的最接近的问题是关于一个稍微不同的问题,通用接口:
https://github.com/NancyFx/Nancy/issues/2747 和
https://github.com/grumpydev/TinyIoC/issues/8
有没有人能够做到(也许是通过反思?)。或者,是否有开箱即用的 IoC 容器?
更新:
看起来这是 TinyIoCContainer 的一个怪癖。该代码适用于 UnityContainer。
我正在使用 .NET Nancy 的 TinyIoCContainer 进行依赖注入。我正在尝试通过泛型注册接口及其实现,如下所示:
Register(container, typeof(IUserService), typeof(UserService));
private void Register<TInterface, TImplementation>(TinyIoCContainer container)
where TInterface : class
where TImplementation : class, TInterface
{
container.Register<TInterface, TImplementation>();
}
这给了我以下异常:
Cannot register type System.Type - abstract classes or interfaces are not valid implementation types for SingletonFactory.
这表明 SingletonFactory 不能使用泛型。我也试过将类型注册为多实例:
container.Register<TInterface, TImplementation>().AsMultiInstance();
我也遇到了同样的异常。
我能找到的最接近的问题是关于一个稍微不同的问题,通用接口: https://github.com/NancyFx/Nancy/issues/2747 和 https://github.com/grumpydev/TinyIoC/issues/8
有没有人能够做到(也许是通过反思?)。或者,是否有开箱即用的 IoC 容器?
更新:
看起来这是 TinyIoCContainer 的一个怪癖。该代码适用于 UnityContainer。