EnumBuilder.DefineLiteral(String, Object) Yöntem

Tanım

Belirtilen sabit değere sahip bir numaralandırma türündeki adlandırılmış statik alanı tanımlar.

C#
public System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object? literalValue);
C#
public System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object literalValue);

Parametreler

literalName
String

Statik alanın adı.

literalValue
Object

Değişmez değerin sabit değeri.

Döndürülenler

Tanımlanan alan.

Örnekler

Aşağıdaki kod örneği, kullanarak EnumBuilderdinamik bir derleme içinde bir numaralandırmanın oluşturulmasını gösterir. Örnek, temel alınan türüyle Int32adlı Elevationbir numaralandırma tanımlar ve iki öğe oluşturur: Low0 değerine sahip , ve High1 değeriyle. Tür oluşturulduktan sonra derleme adıyla TempAssembly.dllkaydedilir. Bu derlemenin içeriğini incelemek için Ildasm.exe (IL Disassembler) kullanabilirsiniz.

Not

.NET Framework 2.0 sürümünden önce, bu kod örneği doğru bir numaralandırma üretmez.

C#
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
 */

Açıklamalar

Tanımlı alanda , Staticve Literal alan öznitelikleri Publicayarlanır.

Not

1.0 ve 1.1 .NET Framework sürümlerinde, öğeleri sabit listesi türü yerine türünde Int32 olan sabit listeleri yaydığındanEnumBuilder, kullanarak TypeBuilder numaralandırmaları tanımlamak gerekir. .NET Framework sürüm 2.0'da, EnumBuilder öğeleri doğru türe sahip olan sabit listeleri yayar.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided), 2.1