如何存储这些通用参数?

时间:2016-03-13 19:02:55

标签: c# generics

我正在使用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. 
}

我如何设置一个集合对象来实现我正在寻找的结果?我在存储接口类型和实现时都遇到了问题。

1 个答案:

答案 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);
}