Восстановление методов пропусков наследования

#refit

#восстановление

Вопрос:

Мы используем Refit для наших объявлений API и хотим использовать наследование интерфейса. Здесь показан пример: https://github.com/reactiveui/refit#interface-inheritance

 public interface IPlatformRestClient
{
    HttpClient Client { get; }

    [Get("/version")]
    Task<string> GetVersion();
}

public interface ITestRestClient : IPlatformRestClient
{
    [Get("/test")]
    Task<string> Test();
}
  

Возможно, я слеп и делаю что-то не так, но конструкция приводит к следующему сообщению об ошибке

‘AutoGeneratedITestRestClient’ не реализует элемент интерфейса ‘IPlatformRestClient.GetVersion()’ Platform.RestClient.UnitTests

И если я открою заглушки:

 /// <inheritdoc />
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
[global::System.Diagnostics.DebuggerNonUserCode]
[Preserve]
[global::System.Reflection.Obfuscation(Exclude=true)]
partial class AutoGeneratedITestRestClient : ITestRestClient
{
    /// <inheritdoc />
    public HttpClient Client { get; protected set; }
    readonly IRequestBuilder requestBuilder;

    /// <inheritdoc />
    public AutoGeneratedITestRestClient(HttpClient client, IRequestBuilder requestBuilder)
    {
        Client = client;
        this.requestBuilder = requestBuilder;
    }

    /// <inheritdoc />
    Task<string> ITestRestClient.Test()
    {
        var arguments = new object[] {  };
        var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] {  });
        return (Task<string>)func(Client, arguments);
    }
}
  

Так эта функция нарушена или у меня есть какая-либо ошибка?

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

1. Похоже на ошибку. Наследование интерфейса работает, только если все интерфейсы расположены в одном проекте

2. это открытая проблема для библиотеки Refit, поскольку наследование интерфейса работает только в том случае, если они находятся в одном проекте.

3. @NaushadWarsi рад снова тебя видеть. Вы нашли мою проблему с GitHub 🙂

4. спасибо за этот пост! У меня аналогичная проблема с унаследованными интерфейсами. Мне действительно нужно было, чтобы это работало, поэтому быстрым решением было объявить все методы из родительского интерфейса в дочернем интерфейсе как новые. Наносит ущерб цели наследования, но я рад, что нашел этот пост и ссылку на ошибку, чтобы я мог следить за этим исправлением.