Как я могу определить несколько типов с тем же именем, и параметры другого типа с помощью Отражения Испускают?

Как я могу генерировать типы как они с помощью Системы. Отражение. Испустите библиотеки:

public class Test<T> {}
public class Test<T1, T2> {}

Когда я называю ModuleBuilder. DefineType (строка) со вторым описанием типа, я получаю исключение, потому что уже существует другой тип в модуле с тем же именем (я уже определил параметр типа на первом типе). Какие-либо идеи?

5
задан Wesley Wiser 16 March 2010 в 20:26
поделиться

1 ответ

Вам следует избегать конфликта так же, как это делают C # и VB.Net. При отправке имени универсального типа добавьте символ `и количество общих параметров. Например, следующие имена типов фактически генерируются для вышеупомянутого

class Test`1 // Test<T>
class Test`2 // Test<T1,T2>

. Вы можете просмотреть изменение этого имени в BCL с помощью отражателя. Установите язык на IL вместо C #, и он покажет фактические имена типов, как они передаются в метаданных, вместо предварительно заданного имени языка.

3
ответ дан 15 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: