gpt4 book ai didi

C# Unity注册注册类型列表,通过添加N个实例解析

转载 作者:行者123 更新时间:2023-11-30 16:43:00 24 4
gpt4 key购买 nike

我有一个接收

的服务
 public ServiceManagement(List<IWorker> workers)

我已经注册了 worker :

this.Container.RegisterType<IWorker, Worker>

我想在解析该列表时告诉 unity 恰好创建 N 个 Worker 实例。

有人可以帮忙吗?

我尝试了以下方法:

接收数组而不是列表并像这样注册:

for (int i = 0; i < N; i++)
{
this.Container.RegisterType<IWorker, Worker>(i.ToString());
}

但这只适用于不同的IWorker实现不一样。

提前致谢!

最佳答案

你不应该多次注册同样的东西。你应该做的是创建你的 worker 工厂。将实例数传递给您的工厂。然后在服务构造函数中传递将创建列表的工厂,而不是列表本身。

在容器中,注册工厂,所以每当你想将不同的对象类型传递给服务时,你只需要交换工厂。

一些示例代码:

public class WorkerFactory :IFactory<IWorker>
{
public IEnumerable<IWorker> Create(int n)
{
var workers = new List<IWorker>();
for(int i = 0; i<n;i++)
workers.Add(new Worker());
return workers;
}
}

public ServiceManagement(IFactory<IWorker> workersFactory)
{
Workers = workersFactory.Create(5);
}

关于C# Unity注册注册类型列表,通过添加N个实例解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45752218/

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