2008-11-10 38 views
5

tôi đã đoạn dòng mã sau đây để tìm kiếm cho một propery của một thể hiện theo tên:Làm cách nào để sử dụng .Net phản ánh để tìm kiếm thuộc tính theo tên bỏ qua trường hợp?

var prop = Backend.GetType().GetProperty(fieldName); 

Bây giờ tôi muốn bỏ qua trường hợp của fieldName, vì vậy tôi thử như sau:

var prop = Backend.GetType().GetProperty(fieldName, BindingFlags.IgnoreCase); 

... Không có súc sắc. Bây giờ prop sẽ không tìm thấy tên trường có trường hợp chính xác.

Do đó ..... Làm cách nào để sử dụng .Net phản ánh để tìm kiếm thuộc tính theo tên bỏ qua trường hợp?

Trả lời

13

Bạn cần phải xác định BindingFlags.Public | BindingFlags.Instance cũng như:.

using System; 
using System.Reflection; 

public class Test 
{ 
    private int foo; 

    public int Foo { get { return foo; } } 

    static void Main() 
    { 
     var prop = typeof(Test).GetProperty("foo", 
              BindingFlags.Public 
              | BindingFlags.Instance 
              | BindingFlags.IgnoreCase); 
     Console.WriteLine(prop); 
    } 
} 

(Khi bạn không chỉ định bất kỳ cờ, công cộng, ví dụ và tĩnh được cung cấp bởi mặc định Nếu bạn đang xác định nó một cách rõ ràng tôi chỉ đề nghị bạn chỉ định một thẩm hoặc tĩnh, nếu bạn biết những gì bạn cần)

2

thử thêm BindingFlags phạm vi như vậy:.

var prop = Backend.GetType().GetProperty(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase); 

này làm việc cho tôi.

Các vấn đề liên quan