Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Metodo ModuleBuilder.DefineEnum

Definisce un tipo di enumerazione che è un tipo di valore con un singolo campo non static chiamato value__ il tipo specificato.

Spazio dei nomi:  System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)
public EnumBuilder DefineEnum(
	string name,
	TypeAttributes visibility,
	Type underlyingType
)

Parametri

name
Tipo: System.String
Il percorso completo del tipo di enumerazione. name non può contenere caratteri null incorporati.
visibility
Tipo: System.Reflection.TypeAttributes
Gli attributi del tipo per l'enumerazione. Gli attributi sono tutti i bit definiti da VisibilityMask.
underlyingType
Tipo: System.Type
il tipo sottostante per l'enumerazione. Questa operazione deve essere un tipo integer incorporato.

Valore restituito

Tipo: System.Reflection.Emit.EnumBuilder
l'enumerazione definita.
EccezioneCondizione
ArgumentException

Gli attributi diverso dagli attributi di visibilità vengono forniti.

- oppure-

Un'enumerazione con il nome specificato esiste nell'assembly padre di questo modulo.

- oppure-

Gli attributi di visibilità non corrispondono l'ambito dell'enumerazione. Ad esempio, NestedPublic viene specificato per visibility, ma l'enumerazione non è un tipo annidato.

ArgumentNullException

name viene null.

Enum definire è una classe derivata di Enum. value__ il campo presenta Private e SpecialName attributi impostati.

per ulteriori informazioni sui tipi interi incorporati che possono essere specificati come i tipi sottostanti di enumerazioni, vedere Cenni preliminari sulla libreria di classi .NET Framework.

NotaNota

Nelle versioni 1,0 e 1,1 di .NET Framework, è necessario definire enumerazioni tramite TypeBuilder poiché EnumBuilder genera le enumerazioni dei cui elementi sono di tipo Int32 anziché tipo di enumerazione. in .NET Framework versione 2.0, EnumBuilder genera le enumerazioni i cui elementi sono del tipo corretto.

NotaNota

A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede più ReflectionPermission con ReflectionPermissionFlag.ReflectionEmit flag. (Vedere Problemi di sicurezza nella reflection emit). Per utilizzare questa funzionalità, l'applicazione deve soddisfare .NET Framework 3.5 o versione successiva.

Nell'esempio riportato di seguito DefineEnum per implementare un'enumerazione classe in un modulo dinamico. Nell'esempio viene definita un'enumerazione denominata Elevation che dispone di un tipo sottostante di Int32e crea due elementi: Low, con un valore pari a 0 e High, con un valore di 1. Dopo che il tipo è stato creato, l'assembly viene salvato con il nome TempAssembly.dll. È possibile utilizzare Ildasm.exe (disassemblatore MSIL) per esaminare il contenuto di questo assembly.

NotaNota

Prima di .NET Framework versione 2.0, in questo esempio di codice non produce un'enumerazione corretta.


using System;
using System.Reflection;
using System.Reflection.Emit;

class Example
{
    public static void Main()
    {
        // Get the current application domain for the current thread.
        AppDomain currentDomain = AppDomain.CurrentDomain;

        // Create a dynamic assembly in the current application domain, 
        // and allow it to be executed and saved to disk.
        AssemblyName aName = new AssemblyName("TempAssembly");
        AssemblyBuilder ab = currentDomain.DefineDynamicAssembly(
            aName, AssemblyBuilderAccess.RunAndSave);

        // Define a dynamic module in "TempAssembly" assembly. For a single-
        // module assembly, the module has the same name as the assembly.
        ModuleBuilder mb = ab.DefineDynamicModule(aName.Name, aName.Name + ".dll");

        // Define a public enumeration with the name "Elevation" and an 
        // underlying type of Integer.
        EnumBuilder eb = mb.DefineEnum("Elevation", TypeAttributes.Public, typeof(int));

        // Define two members, "High" and "Low".
        eb.DefineLiteral("Low", 0);
        eb.DefineLiteral("High", 1);

        // Create the type and save the assembly.
        Type finished = eb.CreateType();
        ab.Save(aName.Name + ".dll");

        foreach( object o in Enum.GetValues(finished) )
        {
            Console.WriteLine("{0}.{1} = {2}", finished, o, ((int) o));
        }
    }
}

/* This code example produces the following output:

Elevation.Low = 0
Elevation.High = 1 
 */


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.