我正在使用ServiceStack。该库有一个依赖注入方法,称为Register。
public IRegistration<TService> Register<TService>(TService> instance)
您可以这样称呼:
Container.Register<IFirstServiceInterface>(new FirstServiceInterfaceImplementation());
Container.Register<ISecondServiceInterface>(new SecondServiceInterfaceImplementation());
现在,我想创建一个采用与Register相同参数的方法。但是,在我的方法中,我将传递的实例和接口类型添加到ICollection对象,以便稍后将其传递给ServiceStack的Register方法。当我想将这些参数传递给ServiceStack时,我只需要调用:
foreach(var item in dependencyCollection)
{
ServiceStack.Register(item);
//not exactly how you call the Register method, but you get the idea.
}
我如何设置一个集合对象来实现我正在寻找的结果?我在存储接口类型和实现时都遇到了问题。
答案 0 :(得分:0)
很难在这里推断出你在寻找什么,但也许你正在研究一些ServiceStack Funq的IOC后期API? e.g:
container.Register(
new FirstServiceInterfaceImplementation(),
typeof(IFirstServiceInterface));
//or
container.RegisterAutoWiredType(
typeof(FirstServiceInterfaceImplementation),
typeof(IFirstServiceInterface));
使用第一个API可以使用Dictionary<Type,object>
,例如:
var deps = new Dictionary<Type,object> {
{ typeof(IFirstServiceInterface), new FirstServiceInterfaceImplementation() },
{ typeof(ISecondServiceInterface), new SecondServiceInterfaceImplementation() },
};
然后注册如下:
foreach (var entry in deps)
{
container.Register(entry.Value, entry.Key);
}