MethodBuilder.SetParameters(Type[]) Metoda

Definicja

Ustawia liczbę i typy parametrów dla metody.

public:
 void SetParameters(... cli::array <Type ^> ^ parameterTypes);
public void SetParameters (params Type[] parameterTypes);
member this.SetParameters : Type[] -> unit
Public Sub SetParameters (ParamArray parameterTypes As Type())

Parametry

parameterTypes
Type[]

Tablica Type obiektów reprezentujących typy parametrów.

Wyjątki

Bieżąca metoda jest ogólna, ale nie jest definicją metody ogólnej. Oznacza to, IsGenericMethod że właściwość to true, ale IsGenericMethodDefinition właściwość to false.

Przykłady

Poniższy przykład kodu używa metody , DefineGenericParameters aby utworzyć metodę ogólną. Metoda SetParameters służy do nadania metodzie jednego parametru, którego typ zostanie określony przez pierwszy parametr typu ogólnego. Metoda SetReturnType służy do nadania metodzie typu zwracanego określonego przez drugi parametr typu ogólnego.

Ten kod jest częścią większego przykładu podanego DefineGenericParameters dla metody .

// 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.
//
array<String^>^ genericTypeNames = {"T", "U"};
array<GenericTypeParameterBuilder^>^ genericTypes =
    sampleMethodBuilder->DefineGenericParameters(
    genericTypeNames);
// 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);
' 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.
'
Dim typeParamNames() As String = {"T", "U"}
Dim typeParameters() As GenericTypeParameterBuilder = _
    demoMethod.DefineGenericParameters(typeParamNames)

' The second type parameter is constrained to be a 
' reference type.
typeParameters(1).SetGenericParameterAttributes( _
    GenericParameterAttributes.ReferenceTypeConstraint)
// Set parameter types for the method. The method takes
// one parameter, and its type is specified by the first
// type parameter, T.
array<Type^>^ parameterTypes = {genericTypes[0]};
sampleMethodBuilder->SetParameters(parameterTypes);

// Set the return type for the method. The return type is
// specified by the second type parameter, U.
sampleMethodBuilder->SetReturnType(genericTypes[1]);
// 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]);
' Set parameter types for the method. The method takes
' one parameter, and its type is specified by the first
' type parameter, T.
Dim params() As Type = {typeParameters(0)}
demoMethod.SetParameters(params)

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

Uwagi

Jeśli liczba i typy parametrów są znane podczas definiowania metody, można je ustawić przy użyciu dowolnego przeciążenia TypeBuilder.DefineMethod metody, która akceptuje tablicę typów parametrów. Jednak metoda ogólna może mieć parametry, których typy są określone przez co najmniej jeden z własnych parametrów typu ogólnego, których nie można zdefiniować, dopóki metoda nie zostanie zdefiniowana. Użyj tej metody, aby ustawić typy parametrów w tym przypadku.

Jeśli typ zwracany ma opcjonalne lub wymagane modyfikatory niestandardowe, takie jak IsConst, użyj SetSignature(Type, Type[], Type[], Type[], Type[][], Type[][]) przeciążenia metody.

Wywołanie tej metody zastępuje wszystkie typy parametrów, które zostały ustawione przy użyciu TypeBuilder.DefineMethod metody .

Dotyczy

Zobacz też