TypeBuilder.MakeGenericType(Type[]) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Замещает элементы массива типов для параметров типа определения текущего универсального типа и возвращает результирующий сконструированный тип.
public:
override Type ^ MakeGenericType(... cli::array <Type ^> ^ typeArguments);
public override Type MakeGenericType (params Type[] typeArguments);
override this.MakeGenericType : Type[] -> Type
Public Overrides Function MakeGenericType (ParamArray typeArguments As Type()) As Type
Параметры
- typeArguments
- Type[]
Массив типов, который должен быть замещен параметрами типа определения текущего универсального типа.
Возвращаемое значение
Type представляет сконструированный тип, сформированный путем замещения элементов объекта typeArguments
параметрами текущего универсального типа.
Исключения
Текущий тип не представляет определение универсального типа. То есть IsGenericTypeDefinition возвращает false
.
typeArguments
имеет значение null
.
-или-
Любой элемент typeArguments
имеет значение null
.
Свойство Module любого элемента typeArguments
— null
.
-или-
Свойство Assembly модуля любого элемента typeArguments
— null
.
Комментарии
Используйте этот метод, если для созданного кода требуется тип, созданный на основе текущего определения универсального типа. Нет необходимости вызывать CreateType метод перед вызовом MakeGenericType метода для TypeBuilder объекта , представляющего определение универсального типа. Если текущий TypeBuilder объект не представляет определение универсального типа, InvalidOperationException создается исключение .
Объект, возвращаемый этим методом, функционирует как заполнитель для созданного универсального типа в созданном коде. Это экземпляр класса, производного от Type , который имеет ограниченные возможности. В частности:
Чтобы получить методы, поля и конструкторы для этих сконструированных универсальных типов, используйте перегрузки GetMethod(Type, MethodInfo)методов , GetField(Type, FieldInfo)и GetConstructor(Type, ConstructorInfo) .
Два экземпляра, представляющие один и тот же сконструированный тип, не сравниваются как равные. Например, в следующем коде
t1.Equals(t2)
возвращаетсяfalse
:
Type^ t1 = tbldr->MakeGenericType(String::typeid);
Type^ t2 = tbldr->MakeGenericType(String::typeid);
bool result = t1->Equals(t2);
Type t1 = tbldr.MakeGenericType(typeof(string));
Type t2 = tbldr.MakeGenericType(typeof(string));
bool result = t1.Equals(t2);
Dim t1 As Type = tbldr.MakeGenericType(GetType(String))
Dim t2 As Type = tbldr.MakeGenericType(GetType(String))
Dim result As Boolean = t1.Equals(t2)