Я анализирую тип с помощью Mono.Cecil. Как я могу проверить, имеет ли тип, с которым я разбираюсь, доступ к методам получения других классов?
Для прямого доступа к полям я нашел решение:
foreach (MethodDefinition method in type.Methods)
{
foreach (Instruction instruction in method.Body.Instructions)
{
if (instruction.OpCode == OpCodes.Ldfld)
{
FieldReference field = instruction.Operand as FieldReference;
if (fields.Contains(field.ToString()) && !accesses.Contains(field.ToString()))
{
accesses.Add(field.ToString());
Console.WriteLine("Class " + type.Name + " accesses field " + field.Name + " of a foreign class.");
}
}
}
}
Но как я могу решить проблему, если доступ к полю другого класса осуществляется с помощью метода получения?
Или, чтобы упростить вопрос: как я могу определить, является ли метод методом получения, используя инструкции CIL? и как я могу определить, какое поле возвращается?