假设我有几个接口(interface)和一个实现它们的类:
public interface ISomething1 { /* blablabla */ }
public interface ISomething2 { /* blablabla */ }
public class Service : ISomething1, ISomething2 { /* blablabla x 2 */ }
我想用这两个接口(interface)在 SimpleIoc 中注册类:
SimpleIoc.Default.Register<ISomething1, Service >();
SimpleIoc.Default.Register<ISomething2, Service >();
但是这里的第二行抛出一个 ArgumentException 消息:
An item with the same key has already been added.
我原以为这里的关键是界面本身,但显然并非如此。我的想法是使用显式 key ,但我想通过依赖注入(inject)获取实例,其中 IoC 只能与无 key 注册表一起使用。
那么我如何在不更改接口(interface)或实现本身的情况下在这里使用 SimpleIoc?
最佳答案
可能这是一个更好的解决方案,因为 Service() 构造函数可以在 ioc 容器中注册依赖项。
SimpleIoc.Default.Register<Service>();
SimpleIoc.Default.Register<ISomething1>(() => SimpleIoc.Default.GetInstance<Service>());
SimpleIoc.Default.Register<ISomething2>(() => SimpleIoc.Default.GetInstance<Service>());
关于c# - 如何在MVVM Light的SimpleIoc中注册一个实现多个接口(interface)的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418069/