I followed the hints here, I even put the following lines in:
var MSILWorker = prop.SetMethod.Body.GetILProcessor();
MSILWorker.Body.InitLocals = true;
I have two properties in two classes:
[NotifyProperty]
public int Number { get; set; }
and
[NotifyProperty]
public string Name { get; set; }
The generated IL code is perfectly identical, except of course in the name of the properties and the type of the backing field. Yet the first one throws VerificationException (“Operation could destabilize the runtime”), the second one does not. What could have I possibly done wrong?
edit: here is the offending IL:
.method public hidebysig specialname instance void set_Number(int32 'value') cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor()
.maxstack 3
L_0000: nop
L_0001: ldarg.0
L_0002: ldarg.1
L_0003: stfld int32 TestApplication.SLTest.SLBOComposite::<Number>k__BackingField
L_0008: ldarg.0
L_0009: ldstr "Number"
L_000e: call instance void TestApplication.SLTest.SLBOComposite::RaisePropertyChanged(string)
L_0013: nop
L_0014: ldarg.0
L_0015: ldstr "Number"
L_001a: ldarg.1
L_001b: call instance void W3B.TestApplication.SLTest.SLBOComposite::Validate(string, object)
L_0020: nop
L_0021: ret
}