Hi,

Anyone knows why 
public double PIValue = Math.PI; (with or without static)

is not detected as a field read or write?



I need to get PIValue is written and Math.PI is read.

Note that I used opCode == OpCodes.Stfld || opCode == OpCodes.Stsfld to detect 
written and opCode == OpCodes.Ldfld || opCode == OpCodes.Ldsfld || opCode == 
OpCodes.Ldsflda to detect field write.



                if (operand.GetType() == typeof(FieldDefinition))
                {
                    FieldDefinition fd = (FieldDefinition)operand;
                    if (opCode == OpCodes.Stfld || opCode == OpCodes.Stsfld)
                    {
                        readOrWritten = " (is written)";
                    }
                    if (opCode == OpCodes.Ldfld || opCode == OpCodes.Ldsfld || 
opCode == OpCodes.Ldsflda)
                    {
                        readOrWritten = " (is read)";
                    }
                    Console.WriteLine("\t\t[field(currAsm)_used] " + fd.Name + 
" (" + opCode + ") " + readOrWritten);
                }
                if (operand.GetType() == typeof(FieldReference))
                {
                    FieldReference fr = (FieldReference)operand;
                    if (opCode == OpCodes.Stfld || opCode == OpCodes.Stsfld)
                    {
                        readOrWritten = " (is written)";                        
                    }
                    if (opCode == OpCodes.Ldfld || opCode == OpCodes.Ldsfld || 
opCode == OpCodes.Ldsflda)
                    {
                        readOrWritten = " (is read)";
                    }


Thanks,

LY
-- 
--
mono-cecil

Reply via email to