使用System.Reflection,如何生成带有out
参数的方法?
我可以使用ref
生成MakeByRefType
,但找不到任何MakeOutType
...
typeBuilder.DefineMethod("myfunc", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new Type[] { typeof(int).MakeByRefType() });
答案 0 :(得分:0)
那是因为没有out int
类型。 Out是attribute,关键字out
是语法糖。
您必须在参数定义中指定此参数属性:
var mb = typeBuilder.DefineMethod("myfunc", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new Type[] { typeof(int).MakeByRefType() });
var paramBuilder = mb.DefineParameter(1, ParameterAttributes.Out, "a");
// or: paramBuilder.SetCustomAttribute(new CustomAttributeBuilder(typeof(OutAttribute).GetConstructor(new Type[0]), new object[0]));