раньше я использовал 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))
));