2014-11-02 4 views
0

나는이 질문에 만족할만한 대답을 찾지 못한 채 몇 시간 동안 인터넷을 검색해 왔습니다. 무엇이 MemberInfo 개체에 포함될 것인지를 결정하지만 정확히 무엇이 가능한 값인지를 알고 있습니다. 코드를이 Type.FindMembers의 필터 조건은 무엇입니까? C#

public class TestTypeOf 
{ 
    private int tt; 
    private string tt2; 

    public void test() 
    { 

     Type type = typeof(TestTypeOf); 
     MemberInfo[] info = type.FindMembers(MemberTypes.All, BindingFlags.NonPublic, new MemberFilter(searchFilter), "tt"); 
     Console.WriteLine(type.BaseType); 
     Console.WriteLine(type.Assembly); 
     Console.WriteLine(type.Attributes); 
     Console.WriteLine(type.FullName); 

     foreach (var Info in info) 
      Console.WriteLine(Info.ToString()); 
    } 

    private static bool searchFilter(MemberInfo memObj, object obj) 
    { 
     if (memObj.Name.ToString() == obj.ToString()) 
      return true; 
     else 
      return false; 
    } 
} 

을 내가 사용하고 그것은 반환하고 빈 배열 내가 검색 기준이 잘못된 매개 변수가 있지만, 거기에 뭔가 다른 것을 알고 사용자들은 ?? 당신은 BindingFlags.Instance 필요

답변

2

뿐만 아니라, NonPublic는 충분하지 않습니다 :

MemberInfo[] info = type.FindMembers(MemberTypes.All, BindingFlags.Instance | BindingFlags.NonPublic, new MemberFilter(searchFilter), "tt"); 

귀하의 다른 매개 변수가 정상입니다.

+0

흥미 롭습니다. 이것은 나를 도왔습니다. 그러나 BindingFlags.Instance가 필요한 이유는 무엇입니까? 나는 원래 BindingFlags.Default를 사용하고 있었고 아무것도 발견하지 못했습니다. Instance 및 Public으로 변경 한 후 물건을 찾기 시작했습니다. – ianbeks