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)); }
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)); }