я знаю, что название может быть немного запутанным, но позвольте мне объяснить, что я пытаюсь достичь ..Выведение Типа от базового класса типа А в обобщенном класс
Давайте предположим, что у меня есть класс
public class TestA<T>
{
public T Key { get; set; }
}
И класс
public class TestB : TestA<int>
{
public string Name { get; set; }
}
Как вы можете видеть, TestB
унаследован от TestA<int>
, и, следовательно, наследует свойство public int Key
Теперь давайте добавим интерфейсу
public interface TestC<T> where T : TestA<X>
{
T DoSomething(X argument);
}
А вот где у меня возникают проблемы.
Я хочу, чтобы метод DoSomething
, чтобы принять аргумент независимо от типа супер класса T
(TestA<>
) есть, в случае TestB
, что бы int
.
Так что, если у меня была реализация типа TestC<TestB>
, я хочу DoSomething
подпись быть:
public TestB DoSomething(int argument);
Проблема заключается в том, что TestA<X>
не компилируется и не удается достичь этого
Возможно, вы знаете, если это возможно? Если да, не могли бы вы объяснить мне, как?
Может быть, я смогу что-то справиться с Reflection?
почему мы должны добавить его в '' TestC'', сделал 'nt получил это –
Я не хочу добавлять его вручную и передавать его как общий аргумент, я хочу, чтобы компилятор заключил его :( –
@MatiCicero Вы не можете этого сделать. Вам нужно указать его вручную. – Servy