2013-02-01 3 views
0

공개 필드를 동적으로 가져 오려고하지만 빈 목록을 반환합니다. 나는 usercontrol을 성공적으로로드하지만 UserControl 유형이므로 .BaseType을 사용하여 실제 유형을 가져옵니다. 하지만 .GetFields()를 호출하면 빈 FieldInfo 배열이 반환됩니다. 이 빈 배열을 반환하는 이유Type.GetFields가 빈 배열을 반환합니다.

public partial class HelloWorldTestUC : System.Web.UI.UserControl 
{ 
    public int Number = 0; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      txtMessage.Text = Message.ToString(); 
     } 
    } 
} 

어떤 생각 : 여기

usercontrolPath = "/usercontrols/HelloWorldTestUC.ascx" 
Page pageHolder = new Page(); 
UserControl usercontrol = (UserControl)pageHolder.LoadControl("~/" + usercontrolPath); 
Type type = usercontrol.GetType().BaseType; 

FieldInfo[] infos = type.GetFields(BindingFlags.Public); 

//i will do something here 
control.Controls.Add(usercontrol); 

은 UserControl을 코드? 최소한 'Number'를 반환해야합니다.

+0

필요하십니까?베이스 유형? – TYY

+0

UserControl.BaseType이 실제 유형 – Base33

답변

4

BindingFlags가 불완전합니다. BindingFlags.Public | BindingFlags.Instance을 공개 인스턴스 필드로 설정하는 것이 좋습니다.

+0

을 제공합니다. 인스턴스가 전달되면 정적 필드 만 반환됩니까? – Base33

관련 문제