Поделиться экземпляром между модулями - PullRequest
2 голосов
/ 26 марта 2019

У меня есть два автозапускаемых модуля WorldModule и RegionModule (отдельный класс, который наследует Module) и перезаписываю функцию загрузки.Оба должны совместно использовать worldService, сервис, который использует модель мира (singleton).

Это класс worldmodule:

      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);
                }
            });
        });
...