我一直在使用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?
答案 0 :(得分:4)
如果您只是发出ret
,那就像C#中的return;
一样。但是你需要return null;
你应该使用
il.Emit(OpCodes.Ldnull);
il.Emit(OpCodes.Ret);