2012-03-26 3 views
3

ли il.EmitCall(OpCodes.Callvirt, getter, null);IL Callvirt эквивалентность?

так же, как:

в il.Emit(OpCodes.Callvirt,getter);

Я не знаю, как проверить IL, который генерируется на лету, так что ... это второй связанный с этим вопрос.

ответ

5

Да.

Источник Emit(OpCode, MethodInfo) начинается с (после проверки)

if (opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj)) 
{ 
    EmitCall(opcode, meth, null); 
} 
+0

Из любопытства, каковы последствия лицензии при размещении исходного кода Microsoft .NET на StackOverflow? – sehe

+0

Я не юрист, но публикация на StackOverflow для меня считается [«необходимость для разработчиков более глубоко понимать внутреннюю работу исходного кода»] (http://referencesource.microsoft.com/referencesourcelicensing.aspx) , но [сама лицензия] (http://referencesource.microsoft.com/netframeworklicense.aspx) использует терминологию, специфичную для лиц, работающих в компании, поэтому я не уверен, где SO будет соответствовать некоторым формулировкам. –

+0

Вы использовали декомпилятор или искали источник фреймворка? Если первый, какой? Если последний, где лучший источник? Большое спасибо за подтверждение моего подозрения. – sgtz

 Смежные вопросы

  • Нет связанных вопросов^_^