TypeBuilder.MakeGenericType(Type[]) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengganti elemen array jenis untuk parameter jenis definisi jenis generik saat ini, dan mengembalikan jenis konstruksi yang dihasilkan.
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
Parameter
- typeArguments
- Type[]
Array jenis yang akan diganti untuk parameter jenis definisi jenis generik saat ini.
Mengembalikan
Mewakili Type jenis yang dibangun yang dibentuk dengan mengganti elemen typeArguments
untuk parameter jenis dari jenis generik saat ini.
Pengecualian
Tipe saat ini tidak mewakili definisi tipe generik. Artinya, IsGenericTypeDefinition mengembalikan false
.
Properti Module dari elemen typeArguments
apa pun adalah null
.
-atau-
Properti Assembly modul dari elemen typeArguments
apa pun adalah null
.
Keterangan
Gunakan metode ini ketika kode yang Anda keluarkan memerlukan jenis yang dibangun dari definisi jenis generik saat ini. Tidak perlu memanggil CreateType metode sebelum memanggil MakeGenericType metode pada TypeBuilder yang mewakili definisi jenis generik. Jika saat ini TypeBuilder tidak mewakili definisi jenis generik, maka InvalidOperationException akan dilemparkan.
Objek yang dikembalikan oleh metode ini berfungsi sebagai tempat penampung untuk jenis generik yang dibangun dalam kode yang Anda pancarkan. Ini adalah instans kelas yang berasal dari Type yang memiliki kemampuan terbatas. Secara khusus:
Untuk mendapatkan metode, bidang, dan konstruktor untuk jenis generik yang dibangun ini, gunakan GetMethod(Type, MethodInfo)metode , GetField(Type, FieldInfo), dan GetConstructor(Type, ConstructorInfo) kelebihan beban.
Dua instans yang mewakili jenis konstruksi yang sama tidak dibandingkan sebagai sama. Misalnya, dalam kode
t1.Equals(t2)
berikut mengembalikanfalse
:
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)