假设我有几个接口和一个实现它们的类:
public interface ISomething1 { /* blablabla */ }
public interface ISomething2 { /* blablabla */ }
public class Service : ISomething1, ISomething2 { /* blablabla x 2 */ }
我想用这两个接口在simpleioc中注册这个类:
SimpleIoc.Default.Register<ISomething1, Service >();
SimpleIoc.Default.Register<ISomething2, Service >();
但是,这里的第二行抛出一个ArgumentException消息:
已添加具有相同密钥的项。
我本以为这里的关键是接口本身,但显然不是这样。我的想法是使用显式键,但是我希望通过依赖注入获得实例,在依赖注入中,ioc只能使用无键注册表。
那么,在这里,我如何在不更改接口或实现本身的情况下使用simpleioc呢?
最佳答案
这可能是一个更好的解决方案,因为service()构造函数可以在ioc容器中注册依赖项。
SimpleIoc.Default.Register<Service>();
SimpleIoc.Default.Register<ISomething1>(() => SimpleIoc.Default.GetInstance<Service>());
SimpleIoc.Default.Register<ISomething2>(() => SimpleIoc.Default.GetInstance<Service>());