2
我目前正在用Reflection.Emit重寫給定類的setter。 一切正常,除非我有一個可爲空屬性使用精細....當發射一個可爲null的setter時,操作可能會破壞運行時的穩定性
這裏是代碼我使用:
ilSetterGen.Emit(OpCodes.Ldarg_0);
ilSetterGen.Emit(OpCodes.Call, baseGetter);
ilSetterGen.Emit(OpCodes.Ldarg_1);
ilSetterGen.Emit(OpCodes.Ceq);
Label retLabel = ilSetterGen.DefineLabel();
ilSetterGen.Emit(OpCodes.Brtrue_S, retLabel);
ilSetterGen.MarkLabel(retLabel);
ilSetterGen.Emit(OpCodes.Ret);
你有什麼線索?
編輯:作爲答案的問題是在平等的測試指出...我刪除之irrelevants部分...
這正是我已經找到5分鐘前:)現在我正在尋找了解如何測試兩個值... – 2010-10-19 14:43:03
@ Jmix90的平等 - 你可以硬編碼使用「經濟學季刊」了幾下,其他的op_Equality或.Equals。如果你想要的話,你可以借用我的代碼(從protobuf-net v2中發出很多)。我仍然不在個人電腦上,但如果你願意,我可以在以後引用這些文件。 – 2010-10-19 14:57:34