2012-03-30 3 views
1

У меня есть новая проблема. Мне нужно сделать метод freetype без параметров со списком аргументов. Код:Дилемма создания метода

Builder.DefineMethod("aaa", MethodAttributes.Public | MethodAttributes.Static); 

Это мой код. Лучшая перегрузка для меня:

http://msdn.microsoft.com/en-us/library/cbwdt101.aspx

Так что теперь вопрос: Как я могу сделать метод без возвращения параметров, которые могут получить аргументы? (мне нужно что-то, что может сделать это: Builder.DefineMethod("aaa", MethodAttributes.Public | MethodAttributes.Static, Type[] ArgumentTypes)

ответ

4

Pass null для возвращаемого типа:

Builder.DefineMethod("aaa", MethodAttributes.Public | MethodAttributes.Static, null, yourArgumentTypes); 

UPDATE

декомпиляции TypeBuilder, похоже, перегрузками без возврата введите pass null в более крупные перегрузки, поэтому он выглядит так: null - это то, как перегрузки без возвращаемого типа не указывают тип возврата.

+2

Не 'typeof (void)'? –

+0

@KirkWoll: глядя на декомпилированный код, меньшие перегрузки передают «null» в более крупные для возвращаемого типа. –

+2

Интересно. Я всегда использовал 'typeof (void)', но эксперимент с обоими производил те же самые результаты. Технически, 'typeof (void)' является более точным в том смысле, что после того, как вы определили метод, значение, возвращаемое из свойства ReturnType, будет 'System.Void' (aka,' typeof (void) '). (Но поскольку оба они дают одинаковый эффект, эта разница явно академическая) –

Смежные вопросы