使用emit返回null

时间:2014-05-05 19:33:32

标签: c# reflection.emit fastmember

我一直在使用FastMember项目。它包含以下代码:

il.Emit(OpCodes.Ldarg, 2); 
il.Emit(OpCodes.Newobj, typeof(ArgumentOutOfRangeException).GetConstructor(new[] { typeof(string) }));
il.Emit(OpCodes.Throw);

我想将其更改为仅返回null。我尝试用一​​行il.Emit(OpCodes.Ret);替换它。但是,我使用它会得到无效的程序错误。如何使用发出的代码将返回值设置为null?

1 个答案:

答案 0 :(得分:4)

如果您只是发出ret,那就像C#中的return;一样。但是你需要return null;

你应该使用

il.Emit(OpCodes.Ldnull);
il.Emit(OpCodes.Ret);