Пакет Nuget не использует метод интерфейса по умолчанию - PullRequest
0 голосов
/ 08 мая 2020

Мы пытаемся реализовать пакет обмена сообщениями для включения в другой проект. Для этого мы хотим создать пакет Nuget, но у нас возникли проблемы с его реализацией в нашей кодовой базе.

Мы реализовали наш интерфейс IMessageHandler, но он дает нам синтаксическую ошибку. Ниже представлена ​​наша реализация интерфейса и сам интерфейс.

public class RegisterEmailHandler : IMessageHandler<Sendable>
{
    public Task HandleMessageAsync(string messageType, Sendable sendable)
    {
        throw new NotImplementedException();
    }
}
/// <summary>
/// The default message handler. Emits the received message data as <see cref="byte[]"/>
/// </summary>
public interface IMessageHandler
{
    Task HandleMessageAsync(string messageType, byte[] obj);
}

/// <summary>
/// Typed variant of <see cref="IMessageHandler"/>. This serializes the <see cref="byte[]"/> of <see cref="IMessageHandler.HandleMessageAsync(string, byte[])"/> into <typeparamref name="TMessage"/>
/// </summary>
/// <typeparam name="TMessage"></typeparam>
public interface IMessageHandler<TMessage> : IMessageHandler where TMessage : class
{
    /// <summary>
    ///     Default interface implementation of <see cref="IMessageHandler.HandleMessageAsync(string, byte[])"/>
    /// </summary>
    Task IMessageHandler.HandleMessageAsync(string messageType, byte[] obj)
    {
        return HandleMessageAsync(messageType, JsonSerializer.Deserialize<TMessage>(obj));
    }

    Task HandleMessageAsync(string messageType, TMessage message);
}

Если мы также загрузим его в Nuget и включим пакет, мы получим следующее исключение:

Interface member 'Task MessageBroker.IMessageHandler.HandleMessageAsync(string, byte[])' is not implemented

Когда мы добавляем, мы загружаем код и добавляем пакет в качестве локальной ссылки, он действительно работает, но не тогда, когда мы помещаем его в Nuget и добавляем пакет Nuget. Кто-нибудь знает, почему это не работает?

Наше текущее решение помещает отсутствующий метод в реализацию с кодом из реализации по умолчанию из интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...