Как C# новичок ie Я должен поддерживать микросервис Azure Служба Fabri c, используя WebApi и Unity.Container:
UnityContainer container = new UnityContainer();
container.RegisterType<IConfigurationReader, ServiceFabricConfigurationReader>();
container.RegisterType<ISettingsManager, SettingsManager>(new SingletonLifetimeManager());
container.RegisterFactory<ICosmosDbClientFactory>(c =>
{
IConfigurationReader configReader = c.Resolve<IConfigurationReader>();
string primaryConnectionString = configReader.ReadConfig(ConfigurationReaderKeys.CosmosDbConnectionString);
string dbName = configReader.ReadConfig(ConfigurationReaderKeys.CosmosDbDatabaseName);
DocumentClient client1 = CosmosClientFactory.CreateClient(new DataStoreInfo(primaryConnectionString), retryPolicy);
DocumentClient client2 = CosmosClientFactory.CreateClient(new DataStoreInfo(primaryConnectionString), retryPolicy);
return new CosmosDbClientFactory(client1, client2, dbName);
});
config.DependencyResolver = new UnityResolver(container);
appBuilder.UseWebApi(config);
К вышеприведенному внедрению зависимостей я хотел бы добавить еще 1 синглтон, который в данный момент использует для создания себя следующий код:
IEventHubEventSender eventSender = new EventHubEventSender(
new EventHubConfigReader(new DynamicResourceSyncer(configReader)),
ServiceTypes.AnalyticsEventHub);
Приведенный выше код уже работает в другой части микросервиса, но я хочу создать объект eventSender
через зависимость инъекция, потому что тогда я смогу заменить его в модульном тесте контроллера API, который я пытаюсь реализовать.
Моя проблема - я не могу просто написать
container.RegisterType<IEventHubEventSender, EventHubEventSender>(new SingletonLifetimeManager());
, потому что мне как-то нужно чтобы передать 2 параметра конструктору:
1. new EventHubConfigReader(new DynamicResourceSyncer(configReader))
2. ServiceTypes.AnalyticsEventHub
Как можно заставить Unity передавать эти параметры одноэлементному конструктору?