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