4

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 
}
TDaver
  • 7,164
  • 5
  • 47
  • 94

1 Answers1

3

Never mind. :)

 L_001b: box int32

There is the solution.

TDaver
  • 7,164
  • 5
  • 47
  • 94