Bir giriş dosyasında aldığım anlamsız kod değerlerini temsil etmek için anlamlı değişken adlarını tuttuğum bir dizi statik "numaralandırma" sınıfı var. İşte bir örnek.Yansımayı kullanarak bir türün statik alan değerlerini alma
Public Class ReasonCodeValue
Private Sub New()
End Sub
Public Shared ReadOnly ServiceNotCovered As String = "SNCV"
Public Shared ReadOnly MemberNotEligible As String = "MNEL"
End Class
Bunları statik sınıflardan birinin türünü ve bir dize değeri kabul etmek ve değer statik alan değerlerden biri olup olmadığını belirleyecek bir yöntem yazmak istiyorum. Belirli bir nesne için örnek alanlarının nasıl alınacağını biliyorum ve belirli bir tür için statik alanların bir listesini nasıl alacağımı biliyorum; Benim anlayamadığım şey, statik alan değerlerinin bir örnek olmadan nasıl elde edileceğidir. Şimdiye kadar sahip olduğum şeyler.
Public Function IsValidValue(ByVal type As Type, ByVal value As String) As Boolean
Dim fields = type.GetFields(BindingFlags.Public Or BindingFlags.Static)
For Each field As FieldInfo In fields
DoSomething()
Next
End Function
ben sadece bu yüzden benim doğrulama yöntemi içinde
FieldInfo.GetValue
geçmek bir örneğini oluşturabilir numaralandırma sınıflarını statik olmayan yapabilir gerekiyordu. Sınıfımı, yapabilseydim tutmayı tercih ederim.
GetRawConstantValue
adlı bir yöntem görüyorum. Tehlikeli görünüyor. Bana ne aradığımı verecek mi? Başka fikirlerin var mı?
Hey, sen benim için VB'ye koydun. Asla boşa geçmeyi düşünmemiştim. Teşekkürler. –
VB'de bir soru sorun ve VB'ye cevap vermeye çalışacağım. Bazen çok yanlış gidiyor, ama bu durumda çok zor değildi :) –
Başka bir JS gerçeği: Jon Skeet cevaplarını evrensel bir IL olarak hesaplar ve daha sonra uygun kaynak koduna çevirir ... –