2010-09-22 72 views
1

如何通过反射获取某类非公有属性?通过反射获取非公共属性

+0

你需要什么?我的第一个冲动是:重新思考你的设计。 – 2010-09-22 08:13:49

+0

是的。退房http://stackoverflow.com/questions/95910/find-a-private-field-with-reflection - 我认为它有你需要的一切 – InSane 2010-09-22 08:14:56

+0

我试过Type.GetProperties()。但它只返回公共属性,但我也需要内部。 – StuffHappens 2010-09-22 08:16:52

回答

4

是的,你可以。在拨打电话GetProperties()时指定BindingFlags.NonPublic

class Program 
{ 
    static void Main(string[] args) 
    { 
     var f = new Foo(); 
     foreach (var fi in f.GetType().GetProperties(
           BindingFlags.NonPublic | BindingFlags.Instance)) 
     { 
      Console.WriteLine(fi); 
     } 
    }  
} 

public class Foo 
{ 
    private string Prop { get; set; } 
} 
1

使用

myType.GetProperties(BindingFlags.NonPublic); 

试试这个link了解详情。

+2

这将返回一个空数组,您还需要指定BindingFlags.Instance或BindingFlags.Static。 – 2010-09-22 08:30:01

相关问题