Saya mencoba membuat metode umum yang akan membaca atribut di kelas dan mengembalikan nilai itu saat runtime. Bagaimana saya melakukan ini?
Catatan: Atribut DomainName adalah kelas DomainNameAttribute.
[DomainName("MyTable")]
Public class MyClass : DomainBase
{}
Apa yang saya coba hasilkan:
//This should return "MyTable"
String DomainNameValue = GetDomainName<MyClass>();
c#
generics
custom-attributes
Zaffiro
sumber
sumber
Jawaban:
MEMPERBARUI:
Metode ini dapat digeneralisasikan lebih lanjut untuk bekerja dengan atribut apa pun:
dan gunakan seperti ini:
sumber
const Filed
kelas statis?Sudah ada perpanjangan untuk melakukan ini.
Begitu:
sumber
sumber
Saya menggunakan jawaban Darin Dimitrov untuk membuat ekstensi generik untuk mendapatkan atribut anggota untuk setiap anggota di kelas (bukan atribut untuk kelas). Saya mempostingnya di sini karena orang lain mungkin menganggapnya berguna:
Contoh penggunaan:
sumber
Versi sederhana dari solusi pertama Darin Dimitrov:
sumber
Berikut tutorial yang bagus jika Anda belum pernah melihatnya sebelumnya http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx
Yang paling menarik bagi Anda adalah bagian di sini, yang disebut Mengakses Atribut http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx#vcwlkattributestutorialanchor3
sumber
Mungkin semudah menggunakan tubuh fungsi generik sebaris. Tidak masuk akal bagi saya untuk membuat fungsi generik di atas tipe MyClass.
sumber
Jika ada yang membutuhkan hasil nullable dan agar ini berfungsi di Enums, PropertyInfo, dan kelas, berikut cara saya menyelesaikannya. Ini adalah modifikasi dari solusi terbaru Darin Dimitrov.
Contoh penggunaan:
sumber
Daripada menulis banyak kode, lakukan ini:
sumber
sumber