private bool IsAssignmentToConcreteType(StackAnalysisResult stackAnalysis)
        {
            TypeReference assignmentTargetType;

            if (InstrumentationUtil.IsCallInstruction(stackAnalysis.Consumer))
            {
                assignmentTargetType = stackAnalysis.AssignedParameter().ParameterType;
            }
            else
            {
                FieldReference assignmentTarget = stackAnalysis.Consumer.Operand as FieldReference;
                if (assignmentTarget != null)
                {
                    assignmentTargetType = assignmentTarget.FieldType;
                }
                else
                {
                    VariableReference variableDefinition = stackAnalysis.Consumer.Operand as VariableReference;
                    if (variableDefinition != null)
                    {
                        assignmentTargetType = variableDefinition.VariableType;
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }
                }
            }
            return(HasReplacement(assignmentTargetType.GetElementType().FullName));
        }
Exemplo n.º 2
0
        private bool IsAssignmentToConcreteType(StackAnalysisResult analysisResult)
        {
            TypeReference assignmentTargetType;

            if (analysisResult.Consumer.IsNewObj() || analysisResult.Consumer.IsCall())
            {
                assignmentTargetType = analysisResult.AssignedParameter().ParameterType;
            }
            else
            {
                var assignmentTarget = analysisResult.Consumer.Operand as FieldReference;
                if (assignmentTarget != null)
                {
                    assignmentTargetType = assignmentTarget.FieldType;
                }
                else
                {
                    var variableDefinition = analysisResult.Consumer.Operand as VariableReference;
                    if (variableDefinition != null)
                    {
                        assignmentTargetType = variableDefinition.VariableType;
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }
                }
            }
            return(HasReplacement(assignmentTargetType.GetElementType().FullName));
        }