Кажется, что в .NET есть два способа передать тип методу или классу. Первый - через дженерики, в которых мы передаем тип как специальный параметр.
Например:
var list = new List<MyClass>();
Другой способ - явно использовать оператор typeof
, например:
var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");
Мой вопрос касается несоответствия унифицированного интерфейса методам, требующим параметра типа. Почему нельзя сделать приведенное выше утверждение следующим образом ?:
var pe = Expression.ParameterExpression<MyClass>("myinstance");
Причина в том, что в поведении компилятора требуются два семантических различия? Когда общий параметр обрабатывается компилятором, он просто выполняет замену, а ля лямбда-исчисление? В то время как методы стиля typeof
требуют фактического экземпляра класса Type
для вывода атрибутов и свойств из?
Спасибо.