Tôi đã có một tập các lớp "liệt kê" tĩnh mà tôi đang sử dụng để giữ các tên biến có ý nghĩa đại diện cho các giá trị mã vô nghĩa mà tôi nhận được trên tệp đầu vào. Đây là một ví dụ về một.Lấy các giá trị trường tĩnh của một kiểu bằng cách sử dụng sự phản chiếu
Public Class ReasonCodeValue
Private Sub New()
End Sub
Public Shared ReadOnly ServiceNotCovered As String = "SNCV"
Public Shared ReadOnly MemberNotEligible As String = "MNEL"
End Class
Tôi muốn viết một phương pháp mà sẽ chấp nhận loại của một trong những lớp học tĩnh và một giá trị chuỗi và xác định xem giá trị là một trong những giá trị trường tĩnh. Tôi biết làm thế nào để có được các lĩnh vực thể hiện cho một đối tượng cụ thể, và tôi biết làm thế nào để có được một danh sách các lĩnh vực tĩnh cho một loại hình cụ thể; những gì tôi không thể tìm ra là làm thế nào để có được các giá trị trường tĩnh mà không có một cá thể. Đây là những gì tôi đã có cho đến nay.
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
Tôi nghĩ tôi có thể làm cho các lớp liệt kê không tĩnh chỉ để tôi có thể tạo ra một thể hiện để vượt qua để FieldInfo.GetValue
bên trong phương pháp xác nhận của tôi. Tôi muốn giữ cho lớp của tôi theo cách của nó nếu tôi có thể.
Tôi thấy phương thức có tên là GetRawConstantValue
. Có vẻ nguy hiểm. Điều đó sẽ cho tôi những gì tôi đang tìm kiếm? Bất kỳ ý tưởng nào khác?
Hey, bạn đặt nó trong VB cho tôi. Không bao giờ nghĩ đến việc vượt qua một null. Cảm ơn. –
Đặt câu hỏi trong VB và tôi sẽ cố gắng trả lời câu hỏi đó trong VB. Đôi khi nó đi sai, nhưng trong trường hợp này nó không quá khó :) –
Một thực tế JS: Jon Skeet tính câu trả lời của mình trong một IL phổ quát và sau đó dịch nó sang mã nguồn thích hợp ... –