unity 解析多个类 [英] Unity Resolve Multiple Classes
本文介绍了unity 解析多个类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何让 microsoft unity 为给定的接口类型构建"一个类列表.
How do I get microsoft unity to 'construct' a list of classes for a given interface type.
非常简单的例子:
List<IShippingCalculation> list = new List<IShippingCalculation>();
list.Add(new NewYorkShippingCalculation());
list.Add(new FloridaShippingCalculation());
list.Add(new AlaskShippingCalculation());
//Not What I want
public void calcship(List<IShippingCalculation> 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<IShippingInfo,new AlaskaShippingCalculation()>();??
//What I want
public void calcship(IShippingInfo info)
{
info.CalculateShippingAmount(State.Alaska)
}
谢谢!
推荐答案
如果您使用的是 Unity 2,您可以使用 ResolveAll
If you are using Unity 2 you can use ResolveAll<T>
Container.RegisterType<IShippingInfo,FloridaShippingCalculation>("Florida");
Container.RegisterType<IShippingInfo,NewYorkShippingCalculation>("NewYork");
Container.RegisterType<IShippingInfo,AlaskaShippingCalculation>("Alaska");
IEnumerable<IShippingInfo> infos = Container.ResolveAll<IShippingInfo>();
您必须为每个注册命名,因为 ResolveAll 只会返回命名的注册.
You have to give a name to every registration because ResolveAll will only return named registrations.
这篇关于unity 解析多个类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文