2008-11-10 8 views
5

miałem następujący wiersz fragment kodu, które wyszukuje propery z instancji według nazwy:Jak korzystać z odbicia .Net w celu wyszukania właściwości według nazwy ignorującej wielkość liter?

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

teraz chcę, aby zignorować przypadek FieldName, więc próbowałem następujące:

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

... Bez kości. Teraz prop nie znajdzie nazw pól, które mają dokładny przypadek.

Z tego powodu ..... Jak korzystać z .Net reflection, aby wyszukać właściwość według nazwy, ignorując wielkość liter?

Odpowiedz

13

musisz określić BindingFlags.Public | BindingFlags.Instance jak dobrze.

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); 
    } 
} 

(Jeśli nie określono żadnej flagi, Publiczne, instancji i statyczne są domyślnie Jeśli określając go wyraźnie Proponuję wam tylko określić jedną z instancji lub statycznych, jeśli wiesz, co trzeba)

2

spróbuj dodać BindingFlags zakres języka tak:.

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

działa to dla mnie.

Powiązane problemy