我有两个 autofac 模块 WorldModule 和 RegionModule(继承 Module 的单独类)并覆盖加载功能。两者都必须共享一个 worldService,即使用世界模型(单例)的服务。
这是世界模块类:
builder.RegisterType<World>().AsSelf()
.AsImplementedInterfaces()
.SingleInstance();
builder.RegisterType<WorldService>().AsImplementedInterfaces();
在该地区,我想拥有相同的 worldservice 实例。这是区域模块类:
builder.RegisterBuildCallback(c =>
{
Task.Run(async () =>
{
while (true)
{
var x = c.Resolve<IWorldService>() as WorldService;
if (x.RegionWasAssignedToRegionServers == true)
{
c.Resolve<IRegionService> ().AssignAreaMapToServer();
break;
}
await Task.Delay(200);
}
});
});