У меня очень сложная необходимость создать класс с помощью пакета Reflection Emit. Класс является простым DTO и будет использоваться с WCF для определения сервисов. Просто, правда. Однако я должен использовать вложенный тип.
Мои текущие тесты не работают. Я могу создать основной тип, но не могу создать вложенный тип.
var serviceClassBuilder = _module.DefineType("something", TypeAttributes.Public | TypeAttributes.Class);
// Create a nested class that will hold the input definition
var nested_type_builder = serviceClassBuilder.DefineNestedType(className,
TypeAttributes.NestedPublic | TypeAttributes.Class |
TypeAttributes.SequentialLayout);
serviceClassBuilder.CreateType(); // <-- NOT WHAT I EXPECTED!
В созданном классе нет вложенных типов. Является ли это возможным? Классы так же просты, как и выше. Я прочитал выше некоторые ограничения пакета Emit, но я не уверен, что он применим к такому простому примеру, как тот, который я использовал.
Я даже пытался добавить строку ниже перед типом создания:
nested_type_builder.CreateType();
Несмотря на то, что я думаю, что первый сборщик должен был выполнить каскадное выполнение CreateType, в конце концов, мне не нужно ничего вызывать для создания методов, сборки, в которой размещается тип, и т. Д.