Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mendapatkan perwakilan rentetan nilai enum dalam C#?

Bagaimana untuk mendapatkan perwakilan rentetan nilai enum dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-29 08:23:10543semak imbas

How to Get String Representation of Enum Values in C#?

Perwakilan rentetan enum

Pertimbangkan penghitungan berikut:

public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}

Borang, bukan ID 1. atribut adat "StringValue" boleh menangani isu ini:

maka, anda boleh menggunakan atribut ini untuk penghitungan anda:
public class StringValue : System.Attribute
{
    private readonly string _value;

    public StringValue(string value)
    {
        _value = value;
    }

    public string Value
    {
        get { return _value; }
    }

}

Untuk mengambil nilai string ini, anda memerlukan yang berikut:

public enum AuthenticationMethod
{
    [StringValue("FORMS")]
    FORMS = 1,
    [StringValue("WINDOWS")]
    WINDOWSAUTHENTICATION = 2,
    [StringValue("SSO")]
    SINGLESIGNON = 3
}

Penyelesaian ini membolehkan anda mendapatkan nilai rentetan untuk penghitungan seperti ini:

> Penyelesaian yang lebih baik ialah corak jenis-safe-enum:
public static class StringEnum
{
    public static string GetStringValue(Enum value)
    {
        string output = null;
        Type type = value.GetType();

        // Look for our 'StringValueAttribute' in the field's custom attributes
        FieldInfo fi = type.GetField(value.ToString());
        StringValue[] attrs = fi.GetCustomAttributes(typeof(StringValue), false) as StringValue[];
        if (attrs.Length > 0)
        {
            output = attrs[0].Value;
        }

        return output;
    }
}

untuk penukaran jenis yang jelas (atau tersirat), tambahkan medan statik dengan pemetaan, isi pemetaan dalam pembina contoh, dan tambahkan pengguna- Pengendali penukaran jenis yang ditakrifkan:
string valueOfAuthenticationMethod = StringEnum.GetStringValue(AuthenticationMethod.FORMS);

& lt; pra & gt; Kamus Readonly Static Private & lt; String, AuthenticationMethod & gt; instance = Kamus baru & lt; String, PengesahanMethod & gt; (); /pra & gt;

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan perwakilan rentetan nilai enum dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn