예제 #1
0
    public void Init()
    {
        var methods = MsCoreReferenceFinder.StringDefinition.Methods;

        if (UseOperatorForOrdinal.GetValueOrDefault())
        {
            reference = ModuleDefinition.ImportReference(methods.First(x => x.Name == "op_Equality" && x.Parameters.Matches("String", "String")));
        }
        else
        {
            reference = ModuleDefinition.ImportReference(methods.First(x => x.Name == "Equals" && x.Parameters.Matches("String", "StringComparison")));
        }
    }
예제 #2
0
    public IEnumerable <Instruction> Convert(MethodReference method)
    {
        if (method.Name != "Equals")
        {
            yield break;
        }

        if (!method.Parameters.Matches("String"))
        {
            yield break;
        }

        if (UseOperatorForOrdinal.GetValueOrDefault())
        {
            yield return(Instruction.Create(OpCodes.Call, reference));
        }
        else
        {
            yield return(Instruction.Create(OpCodes.Ldc_I4, StringComparisonConstant));

            yield return(Instruction.Create(OpCodes.Callvirt, reference));
        }
    }