我不相信
GalaSoft.MvvmLight.Ioc.SimpleIoc
(
source code
)支架
开放泛型
实现。您需要创建封闭的实现,并分别注册每个实现:
public interface IRepository<T> where T : class { }
public class A { }
public class B { }
public class RepositoryA : IRepository<A> { }
public class RepositoryB : IRepository<B> { }
SimpleIoc.Default.Register<IRepository<A>, RepositoryA>();
SimpleIoc.Default.Register<IRepository<B>, RepositoryB>();
我建议你考虑搬到一个更成熟的图书馆,比如
SimpleInjector
它对仿制药有着广泛的支持。
SimpleInjector的代码简单如下:
container.RegisterOpenGeneric(typeof(IRepository<>), typeof(Repository<>));