Очевидно, что это не может быть сделано в C #, вы должны указать либо оба параметра типа, либо ни одного.
И, похоже, это не поддерживается CLR, A<int>.B<>
и A<string>.B<>
относятся к одному и тому же типу:
Type t1 = typeof(A<int>).GetNestedType("B`1");
Type t2 = typeof(A<string>).GetNestedType("B`1");
// t1.Equals(t2) is true
Тип включения обоих типов: A<>
(открытый универсальный тип)
РЕДАКТИРОВАТЬ: дальнейшее тестирование показывает, что typeof(A<int>.B<string>)
на самом делеуниверсальный тип арности 2, не вложенный универсальный тип арности 1 ... typeof(A<int>.B<string>).GetGenericArguments()
возвращает массив с typeof(int)
и typeof(string)
.Так что typeof(A<int>.B<>)
на самом деле эквивалентно (A.B)<int, >
, что не поддерживается (универсальный тип не может быть частично закрыт) * 1021 *