示例#1
0
        internal void Analyze(Instruction inst)
        {
            Debug.Assert(inst != null, $"{nameof(inst)} != null");
            Debug.Assert(inst.Operand != null, $"{nameof(inst)}.Operand != null");

            var operand = inst.Operand;

            var currentRefType = operand.GetType();

            while (currentRefType != typeof(object))
            {
                if (Analyzers.TryGetValue(currentRefType, out var analyzer))
                {
                    analyzer.ProcessOperand(TargetMethod, inst, operand);
                    break;
                }
                currentRefType = currentRefType.BaseType;
            }
        }