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