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[]

現在のジェネリック型定義の型パラメーターに置き換えられる型の配列。

返品

現在のジェネリック型の型パラメーターに対してtypeArgumentsの要素を置き換えて形成された構築型を表すType

例外

現在の型はジェネリック型の定義を表していません。 つまり、 IsGenericTypeDefinitionfalseを返します。

typeArgumentsnullです。

-または-

typeArgumentsのすべての要素がnull

typeArgumentsの任意の要素のModuleプロパティがnull

-または-

typeArgumentsの任意の要素のモジュールのAssemblyプロパティがnull

注釈

出力されたコードで現在のジェネリック型定義から構築された型が必要な場合は、このメソッドを使用します。 ジェネリック型定義を表すTypeBuilderMakeGenericType メソッドを呼び出す前に、CreateType メソッドを呼び出す必要はありません。 現在の TypeBuilder がジェネリック型の定義を表していない場合は、 InvalidOperationException がスローされます。

このメソッドによって返されるオブジェクトは、出力されたコードで構築されたジェネリック型のプレースホルダーとして機能します。 これは、機能が制限されている Type から派生したクラスのインスタンスです。 具体的には次のとおりです。

  • これらの構築されたジェネリック型のメソッド、フィールド、コンストラクターを取得するには、 GetMethod(Type, MethodInfo)GetField(Type, FieldInfo)、および GetConstructor(Type, ConstructorInfo) メソッドのオーバーロードを使用します。

  • 同じ構築型を表す 2 つのインスタンスは、等しいと比較されません。 たとえば、次のコードではt1.Equals(t2)falseを返します。

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)

適用対象