Где метод op_inequality? Как выбрать его через иерархию с помощью.NET Reflector

введите описание изображения здесьУ меня есть старая dll моего приложения. Я должен создать новые инструкции в.NET REFLECTOR, используя Reflexil v1.7. Проблема в том, где я могу найти метод op_Inequality? Я должен написать OpCode= Call Operand =System.Boolean System.String:: op_Inequality (system.string system.string)

1 ответ

Я не уверен, как это должно работать в reflexil, потому что у меня нет установки.Net Reflector.

На что вы обращаете внимание - это оператор op_inequality в классе String, который выглядит следующим образом:

public static bool operator !=(string a, string b)
{
return !string.Equals(a, b);
}

В C# эквивалент

bool result = (a != b) 

Как вы можете видеть из декомпиляции вместо op_Inequality, я ожидаю, что вы могли бы сделать виртуальный вызов, чтобы Equals а затем отрицать ветку.

IL_0024:  ldloc.0     // s
IL_0025:  ldloc.1     // v
IL_0026:  callvirt    System.String.Equals
IL_002D:  brtrue.s    IL_0038
Другие вопросы по тегам