英語で読む

次の方法で共有


MethodBuilder.SetParameters(Type[]) メソッド

定義

メソッドのパラメーターの数と型を設定します。

C#
public void SetParameters(params Type[] parameterTypes);

パラメーター

parameterTypes
Type[]

パラメーターの型を表す Type オブジェクトの配列。

例外

現在のメソッドはジェネリックですが、ジェネリック メソッド定義ではありません。 つまり、IsGenericMethod プロパティは true ですが、IsGenericMethodDefinition プロパティは false です。

次のコード例では、 メソッドを DefineGenericParameters 使用してメソッドをジェネリックにします。 メソッドは SetParameters 、メソッドに 1 つのパラメーターを指定するために使用されます。このパラメーターの型は、最初のジェネリック型パラメーターで指定されます。 メソッドは SetReturnType 、2 番目のジェネリック型パラメーターで指定された戻り値の型をメソッドに提供するために使用されます。

このコードは、 メソッドに対して提供されるより大きな例の DefineGenericParameters 一部です。

C#
// Defining generic parameters for the method makes it a
// generic method. By convention, type parameters are
// single alphabetic characters. T and U are used here.
//
string[] typeParamNames = {"T", "U"};
GenericTypeParameterBuilder[] typeParameters =
    demoMethod.DefineGenericParameters(typeParamNames);

// The second type parameter is constrained to be a
// reference type.
typeParameters[1].SetGenericParameterAttributes(
    GenericParameterAttributes.ReferenceTypeConstraint);
C#
// Set parameter types for the method. The method takes
// one parameter, and its type is specified by the first
// type parameter, T.
Type[] parms = {typeParameters[0]};
demoMethod.SetParameters(parms);

// Set the return type for the method. The return type is
// specified by the second type parameter, U.
demoMethod.SetReturnType(typeParameters[1]);

注釈

メソッドの定義時にパラメーターの数と型がわかっている場合は、パラメーター型の配列を TypeBuilder.DefineMethod 受け入れるメソッドのオーバーロードを使用して設定できます。 ただし、ジェネリック メソッドには、1 つ以上の独自のジェネリック型パラメーターによって型が指定されているパラメーターを含めることができます。これは、メソッドが定義されるまで定義できません。 このメソッドを使用して、その場合にパラメーターの型を設定します。

戻り値の型に省略可能または必須のカスタム修飾子がある場合は、 IsConstメソッドオーバーロードを使用します SetSignature(Type, Type[], Type[], Type[], Type[][], Type[][])

このメソッドを呼び出すと、 メソッドを使用して設定されたすべてのパラメーター型が TypeBuilder.DefineMethod 置き換えられます。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided), 2.1

こちらもご覧ください