У меня есть следующие методы расширения для моего MessageBus
:
public static class MessageBusMixins
{
public static IDisposable Subscribe<T>(
this IObservable<T> observable,
MessageBus bus)
where T:class
{
...
}
public static IDisposable Subscribe<T>(
this IObservable<Maybe<T>> observable,
MessageBus bus)
{
...
}
}
который компилируется отлично. Однако, когда я пытаюсь его использовать:
IObservable<Maybe<string>> source = ...;
MessageBus bus = ...;
source.Subscribe(bus);
Я получаю ошибку, что ни один из двух методов кандидата
являются наиболее конкретными. Однако я думал, что Maybe<T>
быть более конкретным, чем T
, или это неверно?
ИЗМЕНИТЬ
Это вызывает любопытство, потому что если я вызову метод расширения явно:
MessageBus.SubscribeTo(source, bus);
Затем он работает и выбирает правильный метод.