Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menukar Penerangan Enum Kembali kepada Nilai Enumnya?

Bagaimana untuk Menukar Penerangan Enum Kembali kepada Nilai Enumnya?

DDD
Lepaskan: 2025-01-21 21:37:10
asal
672 orang telah melayarinya

How to Convert an Enum Description Back to its Enum Value?

Tukar daripada perihalan enum kembali kepada nilai enum

Dalam setiap kes, nilai penghitungan perlu diambil berdasarkan sifat perihalan yang berkaitan dengan penghitungan. Mari kita terokai pendekatan umum untuk mencapai matlamat ini.

Pertimbangkan contoh berikut di mana kami mempunyai kaedah sambungan untuk mendapatkan sifat perihalan enum:

<code>public static string GetDescription(this Enum value)
{
    // 获取Description属性的实现
}</code>
Salin selepas log masuk

Menggunakan kaedah ini, kita boleh mendapatkan penerangan dengan memanggil kod berikut:

<code>string myAnimal = Animal.GiantPanda.GetDescription(); // "Giant Panda"</code>
Salin selepas log masuk

Sekarang, mari kita selami proses terbalik untuk menukar atribut perihalan kembali kepada nilai penghitungan yang sepadan. Untuk tujuan ini, kami memperkenalkan kaedah pembantu:

<code>public static T GetValueFromDescription<T>(string description) where T : Enum
{
    // 根据描述检索枚举值的实现
}</code>
Salin selepas log masuk

Dalam kaedah ini, kami mengulangi medan jenis penghitungan dan menggunakan refleksi untuk mendapatkan PeneranganAtribut mereka:

<code>foreach (var field in typeof(T).GetFields())
{
    // 检查DescriptionAttribute并与提供的描述匹配的逻辑
}</code>
Salin selepas log masuk

Kami boleh menggunakan nama medan sebagai mekanisme sandaran jika tiada DescriptionAttribute yang sepadan ditemui. Akhirnya, kami menghantar hasil ke jenis enum yang diingini:

<code>return (T)field.GetValue(null);</code>
Salin selepas log masuk

Untuk menggunakan kaedah ini, hanya nyatakan jenis penghitungan dan sifat perihalan:

<code>var panda = EnumEx.GetValueFromDescription<Animal>("Giant Panda");</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar Penerangan Enum Kembali kepada Nilai Enumnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan