2014-11-02 3 views
0

Я искал интернет в течение нескольких часов, не найдя удовлетворительного ответа на этот вопрос Я знаю, что это то, что определяет, что будет включено в объект MemberInfo, но какие именно возможные значения этоЧто такое filterCriteria в 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; 
    } 
} 

, что код, который я использую, и он возвращает пустой массив и я знаю, что критерии поиска имеет неправильный параметр, но есть что-то еще ??

ответ

2

Вам нужно BindingFlags.Instance, а также, NonPublic не хватает:

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

другие Ваши параметры в порядке.

+0

Интересно. Это тоже помогло мне. Но зачем нужен BindingFlags.Instance. Я использовал BindingFlags.Default изначально и ничего не нашел. После перехода на экземпляр и публика я начал находить вещи. – ianbeks