typeof (T) vs

Кажется, что в .NET есть два способа передать тип методу или классу. Первый - через дженерики, в которых мы передаем тип как специальный параметр.

Например:

var list = new List<MyClass>();

Другой способ - явно использовать оператор typeof , например:

var pe = Expression.ParameterExpression(typeof(MyClass), "myinstance");

Мой вопрос касается несоответствия унифицированного интерфейса методам, требующим параметра типа. Почему нельзя сделать приведенное выше утверждение следующим образом ?:

var pe = Expression.ParameterExpression<MyClass>("myinstance");

Причина в том, что в поведении компилятора требуются два семантических различия? Когда общий параметр обрабатывается компилятором, он просто выполняет замену, а ля лямбда-исчисление? В то время как методы стиля typeof требуют фактического экземпляра класса Type для вывода атрибутов и свойств из?

Спасибо.

6
задан Will Vousden 1 April 2011 в 18:15
поделиться