Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mendapatkan perwakilan rentetan nilai enum dalam C#?
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; } } }
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:
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!