Freigeben über


MethodBuilder.SetImplementationFlags(MethodImplAttributes) Methode

Definition

Legt die Implementierungsflags für diese Methode fest.

public:
 void SetImplementationFlags(System::Reflection::MethodImplAttributes attributes);
public void SetImplementationFlags (System.Reflection.MethodImplAttributes attributes);
member this.SetImplementationFlags : System.Reflection.MethodImplAttributes -> unit
Public Sub SetImplementationFlags (attributes As MethodImplAttributes)

Parameter

attributes
MethodImplAttributes

Die festzulegenden Implementierungsflags.

Ausnahmen

Der enthaltende Typ wurde zuvor mit CreateType() erstellt.

- oder -

Für die aktuelle Methode ist die IsGenericMethod-Eigenschaft true, aber die IsGenericMethodDefinition-Eigenschaft ist false.

Beispiele

Im folgenden Codebeispiel wird die kontextbezogene Verwendung der SetImplementationFlags -Methode veranschaulicht, um die Implementierung von MSIL in einem Methodentext zu beschreiben.

array<Type^>^ temp0 = { int::typeid, int::typeid };
MethodBuilder^ myMthdBuilder = myTypeBuilder->DefineMethod( "MyMethod",
                               MethodAttributes::Public,
                               CallingConventions::HasThis,
                               int::typeid,
                               temp0 );

// Specifies that the dynamic method declared above has a an MSIL implementation,
// is managed, synchronized (single-threaded) through the body, and that it
// cannot be inlined.

myMthdBuilder->SetImplementationFlags( (MethodImplAttributes)(
                                        MethodImplAttributes::IL |
                                        MethodImplAttributes::Managed |
                                        MethodImplAttributes::Synchronized |
                                        MethodImplAttributes::NoInlining) );

// Create an ILGenerator for the MethodBuilder and emit MSIL here ...
MethodBuilder myMthdBuilder = myTypeBuilder.DefineMethod("MyMethod",
                    MethodAttributes.Public,
                    CallingConventions.HasThis,
                    typeof(int),
                    new Type[] { typeof(int),
                             typeof(int) });	

// Specifies that the dynamic method declared above has a an MSIL implementation,
    // is managed, synchronized (single-threaded) through the body, and that it
// cannot be inlined.

myMthdBuilder.SetImplementationFlags(MethodImplAttributes.IL |
                     MethodImplAttributes.Managed |
                     MethodImplAttributes.Synchronized |
                     MethodImplAttributes.NoInlining);

// Create an ILGenerator for the MethodBuilder and emit MSIL here ...
Dim myMthdBuilder As MethodBuilder = myTypeBuilder.DefineMethod("MyMethod", _
                 MethodAttributes.Public, _
                 CallingConventions.HasThis, _
                 GetType(Integer), _
                 New Type() {GetType(Integer), GetType(Integer)})

' Specifies that the dynamic method declared above has a an MSIL implementation,
' is managed, synchronized (single-threaded) through the body, and that it 
' cannot be inlined.

myMthdBuilder.SetImplementationFlags((MethodImplAttributes.IL Or _
                  MethodImplAttributes.Managed Or _
                  MethodImplAttributes.Synchronized Or _
                  MethodImplAttributes.NoInlining))

' Create an ILGenerator for the MethodBuilder and emit MSIL here ...

Hinweise

Wenn Sie die SetImplementationFlags -Methode in Kombination mit der SetCustomAttribute -Methode verwenden, sollten Sie sich über potenzielle Interaktionen bewusst sein. Wenn Sie beispielsweise die SetCustomAttribute -Methode zum Hinzufügen des DllImportAttribute Attributs verwenden, wird auch das MethodImplAttributes.PreserveSig Flag festgelegt. Wenn Sie die SetImplementationFlags Methode anschließend aufrufen, wird das PreserveSig Flag überschrieben. Dies kann auf zwei Arten vermieden werden:

Gilt für: