Как уже упоминалось комментатором, текущий дизайн не подходит для внедрения зависимостей.
Класс AzureFileStorage
должен быть подвергнут рефакторингу для удаления экземпляра singleton и, кроме того, иметь собственную абстракцию.
public interface IAzureFileStorage {
CloudStorageAccount StorageAccount { get; }
CloudBlobClient BlobClient { get; }
CloudBlobContainer Container { get; }
}
public sealed class AzureFileStorage : IAzureFileStorage {
private readonly AzureBlobSettings _azureBlobSettings;
public AzureFileStorage(IOptions<AzureBlobSettings> fbAuthSettingsAccessor) {
_azureBlobSettings = fbAuthSettingsAccessor.Value;
StorageAccount = CloudStorageAccount.Parse(_azureBlobSettings.BlobStorageConnectionString);
//instantiate the client
BlobClient = StorageAccount.CreateCloudBlobClient();
//set the container
Container = BlobClient.GetContainerReference(_azureBlobSettings.ContainerBlobAzureId);
}
public CloudStorageAccount StorageAccount { get; private set; }
public CloudBlobClient BlobClient { get; private set; }
public CloudBlobContainer Container { get; private set; }
}
И зарегистрирован как синглтон с набором сервисов
public void ConfigureServices(IServiceCollection services) {
//...
service.AddSingleton<IAzureFileStorage, AzureFileStorage>();
//...
}
Так что, где когда-либо IAzureFileStorage
явно вводится,
private readonly IAzureFileStorage fileStore;
public SomeClass(IAzureFileStorage fileStore) {
this.fileStore = fileStore;
}
тот же экземпляр будетиспользовать через приложение.