Реализация метода переопределения специального клиента, специфичного для платформы.C#

Место общения программистов C#
Ответить
Anonymous
 Реализация метода переопределения специального клиента, специфичного для платформы.

Сообщение Anonymous »

Я создаю собственный клиент API, который будет использоваться моими веб-приложениями (Blazor WebAssembly Standalone) и мобильными приложениями (.NET MAUI) для подключения к моему API. У меня есть два вопроса ниже, но сначала приведу сокращенную версию моего кода:

Код: Выделить всё

public class MyApiClient : IMyApiClient
{
public async Task GetUser()
{
// Check for Internet connection
if(!IsConnectedToInternet())
throw new Exception("No Internet connection!");

// Call API to get user info
...
}

public virtual bool IsConnectedToInternet()
{
// Requires platform specific implementation
return false;
}
}

public interface IMyApiClient
{
Task GetUser();

bool IsConnectedToInternet();
}
И в Program.cs моего приложения Blazor я внедряю HttpClient в MyApiClient следующим образом:

Код: Выделить всё

...
builder.services.AddHttpClient(client => client.BaseAddress = new Uri("https://www.example.com/api"));
...
Мои вопросы:
  • Где мне создать переопределение, специфичное для веб-приложения для метода IsConnectedToInternet()? Делать это в Program.cs кажется неправильным.
  • Я хотел бы использовать интерфейс IMyApiClient в Program.cs вместо фактического класса MyApiClient. Где мне зарегистрировать интерфейс IMyApiClient и его реализацию? Справлюсь ли я с этим так же, как с любыми локальными службами и их интерфейсами в приложении Blazor? Например: builder.services.AddSingleton(); в Program.cs? Если да, то важен ли порядок, например? нужно ли мне внедрить HttpClient после регистрации?


Подробнее здесь: https://stackoverflow.com/questions/798 ... tom-client
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»