Где метод 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