Membaca Enumerasi

Jika kita mempunyai sekumpulan data yang secara logic saling berhubungan dan nilainya tidak berubah, kita bisa mendefinisikannya dalam enumerasi (Enum). Enum hanya bisa kita definisikan di level Namespace atau modul. Tipe data Enum bisa dideklarasikan sebagai Byte, Integer, Long, SByte, Short, UInteger, ULong, atau UShort. Untuk lebih detilnya silahkan baca di MSDN.

Disini saya mencatat beberapa kasus yang saya temui mengenai Enum ketika membuat aplikasi.
Berikut contohnya:

Public Enum TipeDomisili
     AlamatLengkap = 1
     AlamatSesuaiKTP = 2
     AlamatLuarKota = 3
End Enum

Untuk mendapatkan value dari enum diatas, awalnya saya menggunakan kode standar

' _iddomisili adalah nomor id dari anggota enum
Dim alamat As String = [Enum].GetName(GetType(TipeDomisili), _iddomisili)

Hasilnya, jika _iddomisili = 2 saya mendapatkan string “AlamatSesuaiKTP”. Tentu saja hasil ini tidak “user friendly”, yang saya inginkan adalah “Alamat Sesuai KTP” (ada space antar kata).

Setelah browsing kemana-mana, saya mendapatkan cara bagaimana agar hasil pembacaan enum bisa “user friendly” seperti yang saya inginkan.
Caranya adalah dengan menambahkan deskripsi di masing-masing anggota Enum, dan membuat function untuk membaca deskripsi tersebut.

Berikut contohnya. Enum kita modifikasi seperti berikut

    Public Enum TipeDomisili As Byte
        <ComponentModel.Description("Alamat Lengkap")> AlamatLengkap = 1
        <ComponentModel.Description("Alamat Sesuai KTP")> AlamatSesuaiKTP = 2
        <ComponentModel.Description("Alamat Di Luar Kota")> AlamatLuarKota = 3
    End Enum

Buat function untuk mendapatkan deskripsi anggota enum

Public Shared Function GetDescription(ByVal _iddomisili As TipeDomisili) As String
    Dim tipe As Type = GetType(TipeDomisili)
    Dim field As System.Reflection.FieldInfo = tipe.GetField([Enum].GetName(tipe, _iddomisili))
    Dim descriptions() As Object
    descriptions = field.GetCustomAttributes(GetType(ComponentModel.DescriptionAttribute), False)

    If descriptions.Length > 0 Then
        Return DirectCast(descriptions(0), ComponentModel.DescriptionAttribute).Description
    End If
    Return field.Name
End Function

Untuk penerapannya, berikut contohnya

Dim alamat As String = GetDescription(TipeDomisili.AlamatSesuaiKTP)

Happy Coding😀

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 19 Maret 2010, in .NET and tagged , , , , . Bookmark the permalink. 1 Komentar.

  1. salam kenal bos, wah blognya bagus isinya bahasa web semua… mohon ijin banyak belajar dari sini

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: