Как я могу генерировать типы как они с помощью Системы. Отражение. Испустите библиотеки:
public class Test<T> {}
public class Test<T1, T2> {}
Когда я называю ModuleBuilder. DefineType (строка) со вторым описанием типа, я получаю исключение, потому что уже существует другой тип в модуле с тем же именем (я уже определил параметр типа на первом типе). Какие-либо идеи?
Вам следует избегать конфликта так же, как это делают C # и VB.Net. При отправке имени универсального типа добавьте символ `и количество общих параметров. Например, следующие имена типов фактически генерируются для вышеупомянутого
class Test`1 // Test<T>
class Test`2 // Test<T1,T2>
. Вы можете просмотреть изменение этого имени в BCL с помощью отражателя. Установите язык на IL вместо C #, и он покажет фактические имена типов, как они передаются в метаданных, вместо предварительно заданного имени языка.