Как использовать универсальный репозиторий для SOAP в форме Xamarin

#xamarin.forms #soap #c#-2.0

Вопрос:

Я использовал универсальный репозиторий в своем примере проекта в форме Xamrin для получения данных из api. поэтому мой вопрос в том, как я могу сделать следующий репозиторий кода для веб-сервиса soap универсальным. так что, если вы знаете пример или сообщение в блоге, пожалуйста, укажите мне правильное направление

это мой пример кода:

 public interface IGenericRepository
{
    Task<T> GetAsync<T>(string uri, string authToken = "");
   
}
 

и интерфейс побуждения:

 public  class GenericRepository: IGenericRepository
{
    public async Task<T> GetAsync<T>(string uri, string authToken = "")
    {
        try
        {
            HttpClient httpClient = CreateHttpClient(uri);
            string jsonResult = string.Empty;

            var responseMessage = await Policy
                .Handle<WebException>(ex =>
                {
                    Debug.WriteLine($"{ex.GetType().Name   " : "   ex.Message}");
                    return true;
                })
                .WaitAndRetryAsync
                (
                    5,
                    retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
                )
                .ExecuteAsync(async () => await httpClient.GetAsync(uri));

            if (responseMessage.IsSuccessStatusCode)
            {
                jsonResult =
                    await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);
                var json = JsonConvert.DeserializeObject<T>(jsonResult);
                return json;
            }

            if (responseMessage.StatusCode == HttpStatusCode.Forbidden ||
                responseMessage.StatusCode == HttpStatusCode.Unauthorized)
            {
                throw new ServiceAuthenticationException(jsonResult);
            }

            throw new HttpRequestExceptionEx(responseMessage.StatusCode, jsonResult);

        }
        catch (Exception e)
        {
            Debug.WriteLine($"{ e.GetType().Name   " : "   e.Message}");
            throw;
        }
    }
 

}

Комментарии:

1. не зная ничего о вашем мыльном сервисе, невозможно ответить на этот вопрос. Вообще говоря, я бы сказал, что это будет трудно сделать

2. Я хочу знать, является ли это posibele, и если у вас есть ссылка, которая может помочь, пожалуйста, помогите мне, спасибо

3. Если вы случайно знакомы с ASP.NET, затем смотрите: ASP.NET Ядро: Универсальный шаблон Репозитория . Я понимаю, что вы обсуждаете клиентский код, а не серверный код, но взгляните на код на этой странице. Он построен на основе открытого исходного Entity Framework Core кода , так что вы, вероятно, сможете интегрировать его в свое приложение. Возможно, удастся найти кого-нибудь с опытом в этом на каком-нибудь форуме. Я сам им не пользовался, но с него можно начать.