使用Dry IOC解决接口实现的多个实例



我有一个场景,其中有多个类实现相同的接口。消费类是将所有接口实现作为一个列表,这样它就可以在所有实例上调用方法。

public interface IDoSomething
{
void Do();
}
public class Dance : IDoSomething
{
public void Do() { }
}
public class Eat : IDoSomething
{
public void Do() { }
}

public class Person
{
public Person(IEnumerable<IDoSomething> actions)
{
foreach (IDoSomething ds in actions)
{
ds.Do();
}
}
}

如何注册类型,以便类Person可以解析实现IDoSomething的所有类型。这在Unity、MEF和Spring.NET IOC容器中是可能的。尝试对Dry IOC做同样的事情。

您只需要像往常一样用相同的接口和任何实现注册多个东西。然后注入接口的IEnumerable,也可以使用.NET数组实现的任何其他集合接口。

示例:

var container = new Container();
container.Register<IDoSomething, Dance>();
container.Register<IDoSomething, Eat>();
container.Register<Person, Person>();

有关更多信息,请参阅文档。

最新更新