Как разрешить зависимость во времени регистрации зависимостей в Autofac - PullRequest
0 голосов
/ 19 апреля 2020

раньше я использовал Microsoft unity IO C. Контейнер Unity имеет метод RegisterType & Resolve. Таким образом, я смог разрешить один и тот же интерфейс с множественной реализацией. но последняя версия autofa c (var builder = new ContainerBuilder ();) не имеет метода resolv (), и мы не можем собрать его вручную (builder.Build ();). У любого есть идея, как преобразовать приведенную ниже кодовую базу в autofa c или как использовать метод разрешения с регистрацией зависимостей.

container.RegisterType<IQueryManager, FirstManager>(new TypedParameter(typeof(GeneralEnumerations.DatabaseType), GeneralEnumerations.DatabaseType.First));
container.RegisterType<IQueryManager, SecondManager>(new TypedParameter(typeof(GeneralEnumerations.DatabaseType), GeneralEnumerations.DatabaseType.Two));
container.RegisterType<IQueryManager, ThirdManager>(new TypedParameter(typeof(GeneralEnumerations.DatabaseType), GeneralEnumerations.DatabaseType.Three));

Func<DatabaseType, IQueryManager> priceFactory = (databaseType) => container.Resolve<IQueryManager>(databaseType.ToString());
container.RegisterInstance<IQueryManagerFactory<IQueryManager>>(new QueryManagerFactory<IQueryManager>(priceFactory));

Я пытаюсь это, но не работает. Любое предложение, как решить эту проблему с помощью "builder.RegisterInstance".

builder.Register<IQueryManagerFactory<IQueryManager>>(container => new QueryManagerFactory<IQueryManager>(databaseType =>
     container.Resolve<IQueryManager>(new TypedParameter(typeof(GeneralEnumerations.DatabaseType), databaseType))
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...