gpt4 book ai didi

c# - Unity 解析多个类

转载 作者:太空狗 更新时间:2023-10-29 17:32:17 26 4
gpt4 key购买 nike

如何让 Microsoft Unity 为给定的接口(interface)类型“构建”类列表。

非常简单的例子:

  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<T>

Container.RegisterType<IShippingInfo,FloridaShippingCalculation>("Florida");
Container.RegisterType<IShippingInfo,NewYorkShippingCalculation>("NewYork");
Container.RegisterType<IShippingInfo,AlaskaShippingCalculation>("Alaska");

IEnumerable<IShippingInfo> infos = Container.ResolveAll<IShippingInfo>();

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

关于c# - Unity 解析多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com