0

パブリックフィールドを動的に取得しようとしていますが、空のリストが返され続けます。ユーザーコントロールを正常にロードしましたが、タイプはUserControlです。つまり、.BaseTypeを使用して実際のタイプを取得します。しかし、.GetFields()を呼び出すと、空のFieldInfo配列が返されます。

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コードは次のとおりです。

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();
        }
    }
}

空の配列を返す理由はありますか?少なくとも「Number」を返す必要があります。

4

1 に答える 1

4

BindingFlags が不完全です。BindingFlags.Public | BindingFlags.Instanceおそらく、パブリックなインスタンス フィールドを取得したいと思うでしょう。

于 2013-02-01T15:58:18.087 に答える