2010-06-01 1 views
1

Я использую отражение, чтобы испускать некоторые динамические типы во время выполнения. Почему не очень важно.Удалить динамически сгенерированный тип, созданный Reflection Emit

Моя проблема прямо сейчас в том, что с использованием классов, таких как AssemblyBuilder, ModuleBuilder и TypeBuilder, тип генерируется отлично, и я могу работать с ним без проблем.

Однако могут быть случаи, когда мне может потребоваться изменить определение сгенерированного типа. Как удалить сгенерированный тип из сгенерированной сборки?

ответ

3

Вам нужно будет генерировать типы в своем собственном AppDomain и выгрузить все это. Даже тогда вы должны быть осторожны, чтобы не пересечь границу домена, иначе он может загрузить этот тип в ваш основной домен.

+0

Один намек: если ссылаться на эти типы в своем собственном AppDomain, всасывает их и разрушает вашу способность регенерировать их, противоположность не соответствует действительности. Другими словами, совершенно нормально создавать классы, которые вы собираетесь запускать в новом AppDomain. Единственный трюк в том, что вам нужно создать экземпляр такого класса в этом AppDomain, а затем вызвать его через удаленный .NET. Это своего рода беспорядок, но не *, что трудно. –