4
я следовал намеки here, я даже поставить следующие строки:Mono.Cecil: Операция может дестабилизировать во время выполнения
var MSILWorker = prop.SetMethod.Body.GetILProcessor();
MSILWorker.Body.InitLocals = true;
У меня есть два свойства в два класса:
[NotifyProperty]
public int Number { get; set; }
и
[NotifyProperty]
public string Name { get; set; }
Сгенерированный код IL совершенно идентичен, за исключением, конечно, названия свойств и d тип поля подложки. Но первый из них вызывает VerificationException («Операция может дестабилизировать время выполнения»), вторая - нет. Что я мог сделать неправильно?
редактировать: здесь виновный 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
}