Как использовать универсальный SubscribeAsync для открытого универсального типа в EasyNetQ, например RawRabbit - PullRequest
0 голосов
/ 26 июня 2019

Как писать принадлежащий код RawRabbit с помощью EasyNetQ

Код в RawRabbit:

        public static Task WithCommandHandlerAsync<TCommand>(this IBusClient bus,
            ICommandHandler<TCommand> handler) where TCommand : ICommand
            => bus.SubscribeAsync<TCommand>(msg => handler.HandleAsync(msg),
                ctx => ctx.UseConsumerConfiguration(cfg => 
                cfg.FromDeclaredQueue(q => q.WithName(GetQueueName<TCommand>()))));

Я пытаюсь принадлежать коду, но у меня есть ошибка (не полная реализация)

        public static Task WithCommandHandlerAsync<TCommand>
            (this IBus bus, ICommandHandler<TCommand> handler)
            where TCommand : ICommand
            => bus.SubscribeAsync<TCommand>(GetSubscriberId<TCommand>(), handler.HandleAsync);

Ошибка:

Тип 'TCommand' должен быть ссылочным типом, чтобы использовать его в качестве параметра 'T' в универсальном типе или методе 'IBus.SubscribeAsync (string, Func)'

...