.NET 4.5 MethodBuilder.SetMethodBody

В новейшей версии .NET framework, версии 4.5, класс MethodBuilder имеет метод под названием SetMethodBody, который, как мне кажется, является именно тем, что я рассматриваю в качестве альтернативы использованию ILGenerator (который раздражает и имеет странные ограничения). Документацию можно найти здесь, хотя, поскольку .NET 4.5 еще не вышла, она не полностью задокументирована. Я могу привести все аргументы, кроме двух, но с остальными мне понадобится помощь.

Первое, что я не понимаю, это byte[] localSignature, третий аргумент. MSDN заявляет, что это «массив байтов, который содержит сериализованную структуру локальной переменной. Укажите значение null, если метод не имеет локальных переменных.«Проблема в том, что это все, что он говорит, и я не могу узнать формат «сериализованной подписи локальной переменной». Я попытался посмотреть в спецификации ECMA-335, но все, что я нашел, это как указать переменные в неассемблированном CIL. Если бы кто-нибудь мог помочь мне понять это, я был бы очень признателен.

Кроме того, последний аргумент IEnumerable tokenFixups, который представляет собой «набор значений, представляющих смещения в il, каждое из которых указывает начало токена, который может быть изменен. Укажите значение null, если у метода нет токенов, которые нужно изменить.". Я подозреваю, что мне не нужно будет их использовать, но я все равно хотел бы знать, что это такое.

Спасибо, Брэндон

5
задан aboveyou00 10 March 2012 в 04:54
поделиться