你能用#34; params"在Unity中

时间:2014-07-10 09:00:10

标签: c# inversion-of-control unity-container params abstract-factory

我写了一个抽象工厂,它将收集一个简单的facory接口的具体实现的集合。我希望能够使用Unity传递简单的工厂实现。我可以使用params关键字来传入任意数量的已注册实现。所以我的代码是:

public class StreamAbstractFactory : IStreamAbstractFactory
{
    private readonly Dictionary<StreamFactoryType, IStreamFactory> _streamFactoryDictionary;

    public StreamAbstractFactory(params IStreamFactory[] streamFactories)
    {
        _streamFactoryDictionary = new Dictionary<StreamFactoryType, IStreamFactory>();

        foreach (var factory in streamFactories)
        {
            _streamFactoryDictionary.Add(factory.Key, factory);
        }
    }

    public Stream Create(string path, StreamFactoryType type)
    {
        if (_streamFactoryDictionary != null)
        {
            IStreamFactory factory;

            if (_streamFactoryDictionary.TryGetValue(type, out factory))
            {
               return factory.Create(path);
            }
        }
        return null;
    }
}

这可能是统一的吗?这只是&#34;工作&#34;如果我在容器中注册不同的实现?

由于

1 个答案:

答案 0 :(得分:0)

Unity本身编译C#和所有C#。他们没有选择要编译的功能。所以要回答你的问题,是的,params关键字可以在Unity中使用。