TypeBuilder.MakeGenericType(Type[]) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli genel tür tanımının tür parametreleri için bir tür dizisinin öğelerinin yerini alır ve sonuçta elde edilen türü döndürür.
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
Parametreler
- typeArguments
- Type[]
Geçerli genel tür tanımının tür parametreleriyle değiştirilecek tür dizisi.
Döndürülenler
Type Geçerli genel türün tür parametreleri için öğelerinin typeArguments
yerini alarak oluşturulan türü temsil eden.
Özel durumlar
Geçerli tür, genel bir türün tanımını temsil etmiyor. Yani döndürür IsGenericTypeDefinitionfalse
.
typeArguments
, null
değeridir.
-veya-
öğesinin typeArguments
herhangi bir öğesi şeklindedir null
.
Module herhangi bir öğesinin typeArguments
özelliği şeklindedirnull
.
-veya-
Assembly herhangi bir öğesinin typeArguments
modülünün özelliği şeklindedirnull
.
Açıklamalar
Yayılan kodunuz geçerli genel tür tanımından bir tür gerektiriyorsa bu yöntemi kullanın. Genel tür tanımını temsil eden bir TypeBuilder üzerinde yöntemini çağırmadan önce yöntemini çağırmak MakeGenericType gerekmezCreateType. Geçerli TypeBuilder , genel bir türün tanımını temsil etmiyorsa, bir InvalidOperationException oluşturulur.
Bu yöntem tarafından döndürülen nesne, yayılan kodunuzdaki bir genel tür için yer tutucu olarak çalışır. Bu, sınırlı özelliklere sahip olan öğesinden Type türetilmiş bir sınıfın örneğidir. Özellikle:
Bu genel türler için yöntemleri, alanları ve oluşturucuları almak için , GetField(Type, FieldInfo)ve GetConstructor(Type, ConstructorInfo) yöntemi aşırı yüklemelerini kullanınGetMethod(Type, MethodInfo).
Aynı yapı türünü temsil eden iki örnek eşit olarak karşılaştırılmaz. Örneğin, aşağıdaki kodda
t1.Equals(t2)
döndürürfalse
:
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)