Unity解析多个类

如何获得microsoft unity以“构造”给定接口类型的类列表。

很简单的例子:

List list = new List(); list.Add(new NewYorkShippingCalculation()); list.Add(new FloridaShippingCalculation()); list.Add(new AlaskShippingCalculation()); //Not What I want public void calcship(List list) { var info = new ShippingInfo(list); info.CalculateShippingAmount(State.Alaska) } //Somehow in unity, must i do this for all the concrete classes? //how does it know to give a list. Container.RegisterType();?? //What I want public void calcship(IShippingInfo info) { info.CalculateShippingAmount(State.Alaska) } 

谢谢!

如果您使用的是Unity 2,则可以使用ResolveAll

 Container.RegisterType("Florida"); Container.RegisterType("NewYork"); Container.RegisterType("Alaska"); IEnumerable infos = Container.ResolveAll(); 

您必须为每个注册命名,因为ResolveAll将只返回命名注册。

您不需要将容器作为参数,使用如上所述的名称注册具体类型,然后在构造函数中添加数组作为参数,IList或通用Enum不起作用。

 public MyConstructor(IMyType[] myTypes)