2

我有两个 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);
                }
            });
        });
4

0 回答 0