Freigeben über


MethodBuilder.SetSymCustomAttribute-Methode

Legt ein symbolisches benutzerdefiniertes Attribut mithilfe eines BLOBs fest.

Namespace: System.Reflection.Emit
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Sub SetSymCustomAttribute ( _
    name As String, _
    data As Byte() _
)
'Usage
Dim instance As MethodBuilder
Dim name As String
Dim data As Byte()

instance.SetSymCustomAttribute(name, data)
public void SetSymCustomAttribute (
    string name,
    byte[] data
)
public:
void SetSymCustomAttribute (
    String^ name, 
    array<unsigned char>^ data
)
public void SetSymCustomAttribute (
    String name, 
    byte[] data
)
public function SetSymCustomAttribute (
    name : String, 
    data : byte[]
)

Parameter

  • name
    Der Name des symbolischen benutzerdefinierten Attributs.
  • data
    Das Byte-BLOB, das den Wert des symbolischen benutzerdefinierten Attributs darstellt.

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

Der enthaltende Typ wurde bereits mit CreateType erstellt.

– oder –

Das Modul, das diese Methode enthält, ist kein Debug-Modul.

– oder –

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

Hinweise

Im Unterschied zum benutzerdefinierten Metadatenattribut ist dieses benutzerdefinierte Attribut einem Symbolwriter zugeordnet.

Beispiel

Das folgende Codebeispiel veranschaulicht die kontextabhängige Verwendung der SetSymCustomAttribute-Methode zum Festlegen der Bytewerte für den Namen und den Schlüssel eines benutzerdefinierten Attributs, das an eine Methode angefügt ist.

Dim myMethod As MethodBuilder = myDynamicType.DefineMethod("MyMethod", _
               MethodAttributes.Public, GetType(Integer), _
               New Type() {GetType(String)})

' A 128-bit key in hex form, represented as a byte array.
Dim keyVal As Byte() =  {&H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, _
             &H0, &H0, &H0, &H0, &H0, &H60, &HFF, &HFF}

Dim encoder As New System.Text.ASCIIEncoding()
Dim symFullName As Byte() = encoder.GetBytes("My Dynamic Method")

myMethod.SetSymCustomAttribute("SymID", keyVal)
myMethod.SetSymCustomAttribute("SymFullName", symFullName)
MethodBuilder myMethod = myDynamicType.DefineMethod("MyMethod",
                    MethodAttributes.Public,
                    typeof(int),
                    new Type[] { typeof(string) });

// A 128-bit key in hex form, represented as a byte array.
byte[] keyVal = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF };    

System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
byte[] symFullName = encoder.GetBytes("My Dynamic Method");

myMethod.SetSymCustomAttribute("SymID", keyVal);
myMethod.SetSymCustomAttribute("SymFullName", symFullName);
array<Type^>^ temp0 = { String::typeid };
MethodBuilder^ myMethod = myDynamicType->DefineMethod( "MyMethod",
                          MethodAttributes::Public,
                          int::typeid,
                          temp0 );

// A 128-bit key in hex form, represented as a Byte array.
array<Byte>^ keyVal = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF};

System::Text::ASCIIEncoding^ encoder = gcnew System::Text::ASCIIEncoding;
array<Byte>^ symFullName = encoder->GetBytes( "My Dynamic Method" );

myMethod->SetSymCustomAttribute( "SymID", keyVal );
myMethod->SetSymCustomAttribute( "SymFullName", symFullName );
MethodBuilder myMethod = myDynamicType.DefineMethod("MyMethod", 
    MethodAttributes.Public, int.class.ToType(), 
    new Type[] { String.class.ToType() });

// A 128-bit key in hex form, represented as a byte array.
ubyte keyVal[] =  { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
    0x0, 0x0, 0x0, 0x0, 0x60, 0xFF, 0xFF };
System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
ubyte symFullName[] = encoder.GetBytes("My Dynamic Method");
myMethod.SetSymCustomAttribute("SymID", keyVal);
myMethod.SetSymCustomAttribute("SymFullName", symFullName);

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

MethodBuilder-Klasse
MethodBuilder-Member
System.Reflection.Emit-Namespace