Интерфейс IStorageService
определяет только то, как объявляются методы общего хранения и извлечения.Каждая реализация может иметь свой собственный конструктор, который принимает соответствующие параметры.
Если токен, используемый для подключения к Azure, может меняться при каждом вызове, то он, вероятно, должен быть частью сигнатуры метода, и вам может потребоваться сломать ваше решение.в интерфейсы ILocalStorageService
и ICloudStorageService
.
Наличие службы хранения, в которой токен аутентификации может меняться при каждом вызове, кажется странным, как будто указывает на то, что местоположение, в котором хранятся объекты, или требуемые разрешения могутпереключаться между звонками.Обычно местоположение и разрешения остаются неизменными на протяжении всего срока службы.
void Main()
{
var localStorage = new LocalStorageService();
var azureStorage = new AzureStorageService("TOKEN_VALUE");
}
public interface IStorageService
{
string Store<T>(T obj);
T Retrieve<T>(string reference);
}
public class LocalStorageService : IStorageService
{
public LocalStorageService() { /* no parameters necessary */ }
public T Retrieve<T>(string reference) => throw new NotImplementedException();
public string Store<T>(T obj) => throw new NotImplementedException();
}
public class AzureStorageService : IStorageService
{
public AzureStorageService(string token) { /* connect to Azure */ }
public T Retrieve<T>(string reference) => throw new NotImplementedException();
public string Store<T>(T obj) => throw new NotImplementedException();
}