public static bool UsesType(this Instruction instruction, TypeDefinition typeDefinition, params OpCode[] opCodes)
{
if (instruction.IsOpCode(opCodes))
{
var fieldDefinition = instruction.Operand as FieldDefinition;
if (fieldDefinition != null)
{
if (string.Equals(fieldDefinition.DeclaringType.Name, typeDefinition.Name))
{
return true;
}
}
var fieldReference = instruction.Operand as FieldReference;
if (fieldReference != null)
{
if (string.Equals(fieldReference.DeclaringType.Name, typeDefinition.Name))
{
return true;
}
}
var methodDefinition = instruction.Operand as MethodDefinition;
if (methodDefinition != null)
{
if (string.Equals(methodDefinition.DeclaringType.Name, typeDefinition.Name))
{
return true;
}
}
var methodReference = instruction.Operand as MethodReference;
if (methodReference != null)
{
if (string.Equals(methodReference.DeclaringType.Name, typeDefinition.Name))
{
return true;
}
}
}
return false;
}