Общее ограничение C #: параметр типа в классе наследует параметр типа в методе?

У меня есть общий класс, в котором я определяю метод, который должен принимать аргументы другого типа, но только если другой тип реализует параметр типа класса. Однако это не скомпилируется:

class GenericClass<TClass>
{
    public void DoSomething<TMethod>(TMethod input) where TClass : TMethod
    {
        // ...
    }
}

Я получаю сообщение об ошибке компилятора TClass в ограничении метода. Есть ли другой способ указать это?

Уточнение:
У меня сложилось впечатление, что TMethod: TClass означает, что TMethod должен наследовать или реализовывать TClass ] (в зависимости от того, является ли TClass конкретным типом или интерфейсом).В другом, несколько нетрадиционном, обозначении TMethod> TClass (то есть TMethod является расширенным набором TClass ).

Я хочу здесь, чтобы ] TMethod должен быть допустимым типом, только если TClass наследует или реализует его, то есть TClass> TMethod . Будет ли TMethod: TClass делать то же самое?

(Один из ответов гласит, что TMethod: TClass требует, чтобы TMethod был назначен из TClass . Я не уверен, соответствует ли это моим требованиям, но если это так, пожалуйста, объясните более подробно, что означает назначение из , поскольку, если это помогает мне, я, вероятно, неправильно понял это ...)

5
задан Tomas Aschan 14 July 2011 в 16:08
поделиться