Это просто правила.За пределами общей ко-/ противо-дисперсии сигнатуры (, включая типы возврата 1 ) должны точно совпадать.Вы, конечно, можете добавить второй метод, который явно реализует интерфейс и просто оборачивает ваш текущий DoStuffCommand
, чтобы вызывающие, которые явно работают с объектом MainViewModel
, могли легко получить DelegateCommand
без приведения и тех, кто использует его черезссылка IMainViewModel
не является мудрой:
public class MainViewModel : IMainViewModel
{
DelegateCommand DoStuffCommand { get; }
ICommand IMainViewModel.DoStuffCommand => DoStuffCommand;
}
1 Один из моих личных ошибок - когда люди утверждают, что «возвращаемые типы не являются частью подписи вC #».На самом деле они имеют в виду «в целях перегрузки типы возвращаемых данных не учитываются».Есть много мест, например, здесь, где типы возврата являются частью подписи.