Freigeben über


ModuleBuilder.DefineEnum-Methode

Definiert einen Enumerationstyp, der ein Werttyp mit dem einzelnen, nicht statischen Feld value__ des angegebenen Typs ist.

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

Syntax

'Declaration
Public Function DefineEnum ( _
    name As String, _
    visibility As TypeAttributes, _
    underlyingType As Type _
) As EnumBuilder
'Usage
Dim instance As ModuleBuilder
Dim name As String
Dim visibility As TypeAttributes
Dim underlyingType As Type
Dim returnValue As EnumBuilder

returnValue = instance.DefineEnum(name, visibility, underlyingType)
public EnumBuilder DefineEnum (
    string name,
    TypeAttributes visibility,
    Type underlyingType
)
public:
EnumBuilder^ DefineEnum (
    String^ name, 
    TypeAttributes visibility, 
    Type^ underlyingType
)
public EnumBuilder DefineEnum (
    String name, 
    TypeAttributes visibility, 
    Type underlyingType
)
public function DefineEnum (
    name : String, 
    visibility : TypeAttributes, 
    underlyingType : Type
) : EnumBuilder

Parameter

  • name
    Der vollständige Pfad des Enumerationstyps. name kann keine eingebetteten NULL-Werte enthalten.
  • visibility
    Die Typattribute für die Enumeration. Die Attribute sind beliebige, durch VisibilityMask definierte Bits.
  • underlyingType
    Der zugrunde liegende Typ für die Enumeration.

Rückgabewert

Gibt die definierte Enumeration zurück.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

Außer Sichtbarkeitsattributen werden andere Attribute bereitgestellt.

- oder -

Eine Enumeration mit dem angegebenen Namen existiert in der übergeordneten Assembly dieses Moduls.

- oder -

Wenn die Sichtbarkeitsattribute für den Gültigkeitsbereich der Enumeration unzulässig sind. Wenn z. B. NestedPublic als visibility angegeben ist, die Enumeration jedoch kein geschachtelter Typ ist.

ArgumentNullException

name ist NULL (Nothing in Visual Basic).

Hinweise

Die definierte Enumeration ist eine abgeleitete Klasse von Enum. Für das definierte Feld sind Private und SpecialName festgelegt.

Beispiel

Das folgende Codebeispiel veranschaulicht die Verwendung von DefineEnum zum Implementieren einer Enumerationsklasse in einem dynamischen Modul.

Dim currentDomain As AppDomain
Dim myAssemblyName As AssemblyName

' Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain

' Create assembly in current currentDomain
myAssemblyName = New AssemblyName()
myAssemblyName.Name = "TempAssembly"

' Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = currentDomain.DefineDynamicAssembly _ 
                    (myAssemblyName, AssemblyBuilderAccess.Run)

' Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule")

' Define a enumeration type with name 'MyEnum' in the 'TempModule'.
Dim myEnumBuilder As EnumBuilder = myModuleBuilder.DefineEnum _ 
                                   ("MyEnum", TypeAttributes.Public, GetType(Integer))

' Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1", 2)
myEnumBuilder.DefineLiteral("MyEnumMember2", 3)
myEnumBuilder.CreateType()
AppDomain currentDomain;
AssemblyName myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain;

// Create assembly in current currentDomain
myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = 
   currentDomain.DefineDynamicAssembly
               (myAssemblyName, AssemblyBuilderAccess.Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");

// Define a enumeration type with name 'MyEnum' in the 'TempModule'.
EnumBuilder myEnumBuilder = myModuleBuilder.DefineEnum("MyEnum",
                     TypeAttributes.Public,typeof(int));

// Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1",2);
myEnumBuilder.DefineLiteral("MyEnumMember2",3);
myEnumBuilder.CreateType();
AppDomain^ currentDomain;
AssemblyName^ myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain::CurrentDomain;

// Create assembly in current currentDomain
myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder =
   currentDomain->DefineDynamicAssembly(
      myAssemblyName, AssemblyBuilderAccess::Run );

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "TempModule" );

// Define a enumeration type with name 'MyEnum' in the 'TempModule'.
EnumBuilder^ myEnumBuilder = myModuleBuilder->DefineEnum( "MyEnum",
   TypeAttributes::Public, int::typeid );

// Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder->DefineLiteral( "MyEnumMember1", 2 );
myEnumBuilder->DefineLiteral( "MyEnumMember2", 3 );
myEnumBuilder->CreateType();
AppDomain currentDomain;
AssemblyName myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain.get_CurrentDomain();

// Create assembly in current currentDomain
myAssemblyName = new AssemblyName();
myAssemblyName.set_Name("TempAssembly");

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = currentDomain.DefineDynamicAssembly(myAssemblyName,
    AssemblyBuilderAccess.Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");

// Define a enumeration type with name 'MyEnum' in the 'TempModule'.
EnumBuilder myEnumBuilder = myModuleBuilder.DefineEnum("MyEnum", 
    TypeAttributes.Public, int.class.ToType());

// Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1", (Int32)2);
myEnumBuilder.DefineLiteral("MyEnumMember2", (Int32)3);
myEnumBuilder.CreateType();

.NET Framework-Sicherheit

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

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