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