Как разрешить зависимость во время выполнения с параметрами? - PullRequest
0 голосов
/ 10 декабря 2018

У меня простой интерфейс ICloudStorageRepository, который реализуется двумя конкретными классами:

public class AWSStorageRepository : ICloudStorageRepository
{
   private readonly IS3Client _client;
   public AWSStorageRepository(AWSCredentials credentials)
   {
       _client = new AWSStorageFactory(credentials).Create();
   }
}

и:

public class AzureStorageRepository : ICloudStorageRepository
{
   private readonly IAzureClient _client;
   public AzureStorageRepository(AzureCredentials credentials)
   {
       _client = new AzureStorageFactory(credentials).Create();
   }

}

, затем в моем клиентеУ меня есть служба:

public class CloudService
{
    public CloudService(ICloudStorageRepository repository)
    ....

    public Task<ListFiles> GetFiles(GetFilesInput input)
    {
         if(input.Provider == 'aws')
           resolve with AWSStorageRepository
         if(input.Provider == 'azure')
           resolve with AzureStorageRepository
    }
}

Я использую Castle Windsor в качестве контейнера. Я получу учетные данные во время выполнения во входном параметре, просто для однократного использования, поэтому мне нужно передать его в качестве зависимости аргумента.

Как я могу сделать это во время выполнения без регистрации в контейнере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...