急!!!关于用Reflection动态调用User Control

bigliang 2003-10-15 04:21:12
想建一个User Control Library发布,但不想将其发布到GAC中,用反射可以吗?
我试过了用Activator可以得到对象,并建立instance.但加载后不报错但界面上没有出现,Debug发现,正确加载,但User Control的内部成员为空。 高手指点!!!
...全文
72 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddangerous169 2003-10-18
  • 打赏
  • 举报
回复
up
saucer 2003-10-18
  • 打赏
  • 举报
回复
if you want to share across web apps, instead of using User Controls, make them custom controls
bigliang 2003-10-18
  • 打赏
  • 举报
回复
saucer(思归)

LoadControl可以动态调用UserControl的ascx文件,但它必须使用Relateve Path,就是必须和调用它的Page在一个虚拟目录下,如果有如下需求:

1. UserControl可以跨站使用,并无需在编辑时引用。如果统一的UserControl由一个部门维护(比如公司Web的Framework)在其root下有10个站点使用,如果Framework更新了,我们必须到每个应用次Framework的Bin下复制一份(LoadControl需要ascx文件,所以不适合放GAC)

2. 如建立一个UserControl Container Control, 运行时读取配置文件(或数据库)动态调用用户编译的UserConrtrol(事先存在某个目录中), 并呈现在Page上。

......

很多情况下,我们并不能直接runtime应用UserControl,我是下寻求一种途径解决这个问题
saucer 2003-10-17
  • 打赏
  • 举报
回复
if you are using a user control, why cannot you just use LoadControl??
bigliang 2003-10-17
  • 打赏
  • 举报
回复
up
bigliang 2003-10-17
  • 打赏
  • 举报
回复
up
bigliang 2003-10-17
  • 打赏
  • 举报
回复
greystar能否帮忙给出源代码?谢谢

我的代码如下:
Assembly a = Assembly.LoadFile(@"C:\WebRoot\UserControlLibrary\bin\UserControlLibrary.dll");
Type[] t = a.GetTypes();
Type tp = a.GetType("UserControlLibrary.testctrl") ;


object obj = tp.InvokeMember("", System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.CreateInstance,null,tp,null);
object obj = Activator.CreateInstance(tp);
this.Controls.Add((UserControl)obj);
greystar 2003-10-16
  • 打赏
  • 举报
回复
应该可以吧。
bigliang 2003-10-15
  • 打赏
  • 举报
回复
补充以下:我是想在运行时加载,不是开发时引用

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧