Изменение типа после того, как он был создан с помощью TypeBuilder.CreateType - PullRequest
1 голос
/ 02 апреля 2009

Я создаю динамический класс в динамической сборке во время выполнения и хочу иметь возможность определять методы для этого класса по требованию.

Ex.

  1. Сборка типа X
  2. Определить метод GetA для типа X
  3. Создать тип X
  4. Call GetA
  5. использовать тот же тип компоновщика для Типа X
  6. Определить новый метод GetB для типа X
  7. Воссоздать тип X, который теперь имеет и GetA, и GetB

Если это невозможно, мне придется создать тип по требованию для одного из методов, и для этого мне придется создавать сборку каждый раз.

Любые идеи, Спасибо

Ответы [ 2 ]

1 голос
/ 02 апреля 2009

Вы не можете создавать "полные" методы (обнаруживаемые с помощью отражения) - однако вы можете использовать DynamicMethod, чтобы связать новые блоки IL с типом (главным образом для области и т. Д.). Но в конечном итоге вы описываете работу для DLR в 4.0 (и такой язык, как Iron Python; C # и VB не добавляют поддержку языка для объявления динамических методов - только их использование).

0 голосов
/ 02 апреля 2009

Возможно, вам следует создать тип с CodeDom . Вы можете собрать весь тип, скомпилировать код, затем загрузить новую сборку и использовать тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...