【发布时间】:2014-07-10 09:00:10
【问题描述】:
我编写了一个抽象工厂,它将容纳一个简单工厂接口的具体实现的集合。我希望能够使用 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;
}
}
这可以统一吗?如果我在容器中注册不同的实现,这会“起作用”吗?
谢谢
【问题讨论】:
标签: c# inversion-of-control unity-container params abstract-factory