反射的另类实现。(不知道这么用还算不算反射了?)
2008-02-19 20:58 金色海洋(jyk) 阅读(2436) 评论(12) 编辑 收藏 举报在asp.net里面实现反射除了用
Assembly.Load("SMS").CreateInstance("SMS.短信" + 短信开头的编号)
之外还有没有其它的方法呢?
.net里面有UserControl ,而UserControl 又可以使用 Page.LoadControl("UC_Show1.ascx") 的方式来加载。当然 UserControl 也是可以继承的。
Page.LoadControl 的参数是字符串,那么就可以动态设置了。
于是“反射”也就实现了。
我们先定义一个基类:UC_Base






















然后建立UserControl 若干,让这些UserControl都继承 UC_Base 。









最后在建立一个 asp.net页面,里面放一个 PlaceHolder 控件,然后在Page_Load 写如下几行就ok了。






使用这种方法有两个优点:
1、不仅可以加载算法,还可以加载控件。
2、可以让表单更灵活的组合,更容易的实现控件级别的复用。
3、可以实现不用编译就可以修改程序。可以利用“代码前置”的功能,把 ShowData() 的实现的代码写在 .ascx文件里面,这样修改之后不用编译就可以看到修改后的效果了。在一些特殊的情况下会用到。
好像大家总是想把控件和算法分离开来,但是在有些时候合在一起考虑也许会更方便。
或则即使分离出来,控件是不是也可以“享受”算法的待遇呢?
至于效率嘛,还没有测试。
最近写一个项目,要在一个表单里处理好几个表,加起来有几十个字段了,所以就用了UserControl来才分,然后在动态的加载,把代码分散在各个 UserControl 里面,一个页面里的代码少了很多,也就便于阅读和修改维护,每一个UserControl 的模式也基本相同。
同时呢如果多个页面用到了相同的表单(或者是一部分),那么就可以用 UserControl 来达到复用的效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!