как сгенерировать метод с выходным параметром - PullRequest
0 голосов
/ 22 февраля 2019

Используя System.Reflection, как я могу сгенерировать метод с параметром out?

Я могу сгенерировать ref, используя MakeByRefType, но ничего не могу найти ни о каком MakeOutType ...

typeBuilder.DefineMethod("myfunc", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new Type[] { typeof(int).MakeByRefType() });

1 Ответ

0 голосов
/ 22 февраля 2019

Это потому, что нет типа 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]));
...