Это потому, что нет типа out int
.Out - атрибут , а ключевое слово 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]));