공개 필드를 동적으로 가져 오려고하지만 빈 목록을 반환합니다. 나는 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'를 반환해야합니다.
필요하십니까?베이스 유형? – TYY
UserControl.BaseType이 실제 유형 – Base33