2008-11-10 3 views
5

나는 이름으로 인스턴스의 때에 프로퍼티를 검색 다음 코드 줄 조각했다 :.Net reflection을 사용하여 대소 문자를 무시하고 이름으로 속성을 검색하는 방법은 무엇입니까?

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

가 지금은 fieldName에의 경우를 무시하려면를, 그래서 나는 다음과 같은 시도 :

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

... 주사위가 없습니다. 이제 소품은 정확한 대소 문자를 가진 필드 이름을 찾지 않습니다.

따라서 ..... .Net 리플렉션을 사용하여 이름을 대문자로 무시하고 속성을 검색하려면 어떻게해야합니까? . 당신이 어떤 플래그, 공공, 인스턴스를 지정하지 않고 정적이 기본적으로 제공하는 경우 당신이 그것을 지정하는 경우 명시 적으로 난 단지 당신을 제안

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

을 (:

답변

13

당신은뿐만 아니라 BindingFlags.Public | BindingFlags.Instance를 지정해야 당신은 당신이 필요 알고있는 경우, 인스턴스 또는 정적 중 하나를 지정)

2

시도가과 같이 범위 BindingFlags의 추가 :.

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

이 나를 위해 작동합니다.

관련 문제