ASP.NET - ascx.designer'属性'在运行时没有显示在反射中

时间:2010-07-02 14:11:43

标签: asp.net vb.net reflection

我有一个非常简单的设置,单独的mycontrol.ascx与assoicated mycontrol.ascx.designer.vb和mycontrol.ascx.vb文件。

mycontrol.ascx对自定义控件嵌入一个引用:“MyMenu”:

<mM:myMenu id="myMenu1" runat="server" />

这在mycontrol.ascx.designer.vb文件中创建了一个受保护的引用:

Protected WithEvents myMenu1 As Global.CustomControls.MyMenu

现在,当我断开mycontrol.ascx的Page_Load()事件时,通过以下方式检查从类型返回的成员:

Me.GetType().GetMembers()

我无法参考myMenu1。如果我以智慧的方式查看控件,则可以访问该属性:

Me.myMenu1 

任何人都可以解释我在运行时通过反射访问设计器创建的属性到底是什么以及我需要做些什么吗?

干杯

2 个答案:

答案 0 :(得分:0)

您的.acsx文件会创建一个继承代码隐藏类的单独类(由编译器生成)。

GetMembers仅返回直接在类上定义的成员,而不返回从其基类继承的任何成员。

您需要在基类上定义成员,如下所示:

Me.GetType().BaseType.GetMembers()

答案 1 :(得分:0)

  

我需要做什么才能在运行时通过反射访问设计器创建的属性?

我不知道你的菜单控件但是你不需要掌握用户控件的成员,你需要得到菜单控件的成员。

myMenu1.GetType().GetMembers()

除了为什么要用反射?您的自定义控件是否显示可用于设置设置的属性,如

myMenu1.SelectedMenuItem = 3