IEnumerable<int> FindSetFieldInstructions()
{
for (var index = 0; index < instructions.Count; index++)
{
var instruction = instructions[index];
if (instruction.OpCode == OpCodes.Stfld)
{
var fieldReference = instruction.Operand as FieldReference;
if (fieldReference == null)
{
continue;
}
if (fieldReference.Name == propertyData.BackingFieldReference.Name)
{
yield return index + 1;
}
}
else if (instruction.OpCode == OpCodes.Ldflda)
{
if (instruction.Next==null)
{
continue;
}
if (instruction.Next.OpCode!=OpCodes.Initobj)
{
continue;
}
var fieldReference = instruction.Operand as FieldReference;
if (fieldReference == null)
{
continue;
}
if (fieldReference.Name == propertyData.BackingFieldReference.Name)
{
yield return index + 2;
}
}
}
}