Я разработал следующий интерфейс.Ограничение общего входного параметра
public interface IProcess<ICommand> { void Run(); }
Однако Resharper замечает, что это на самом деле не имеет значения, что я называю входной параметр, будь то ICommand
или TWhatEverElse
.
Теперь это легко узнаваемый по имени я выбрал то, что я предназначен было установить ограничение типа родового параметра, чтобы быть один, который реализуется, производный или просто типа ICommand
К сожалению, упрямый компьютер делает то, о чем я прошу, а не то, что я имею в виду, поэтому мне нужна помощь. Использование обозначений : where
не принесет мне много пользы, потому что я хочу ограничить интерфейс (и все его миньоны).
Могу ли я ограничить тип, который отправляется в фигурные скобки крокодила, и если да, то как?
Редактировать
Я добавил пункт где и прибыли в следующем.
public interface IProcess<TCommand> where TCommand : ICommand { }
Однако, похоже, мне что-то не хватает. Класс реализации следующий.
public class Processo : IProcess<Commando> { }
public class Commando : ICommand { }
Однако компилятор утверждает, что он не собирается летать, потому что Commando не конвертируется в ICommand. Что мне здесь не хватает ?!
Вы исследовали это? Посмотрите на это: https://msdn.microsoft.com/en-us/library/d5x73970.aspx –
Ха, по-видимому, я этого не сделал. По крайней мере, недостаточно. Это то, что человек получает, когда человек принимает то, что узнает ... Позор мне. Тем не менее, хороший вопрос, подумайте. –
Итак, теперь вы знаете, как это сделать? – Ric