当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 利用.NET语言开发自己的脚本语言(一)

ASP.NET
调用另外一个同名的重载函数漏掉括号出现的严重问题
DataGrid模板列应用:在DataGrid中用CheckBox控制TextBox的Enabled属性
使用存储过程的一个小例子
.net中xmlhttp下载文件的方法参考
简单的c#文本文件读写
我的C#学习过程 第一天 安装
在数据库中开始一个事务。
用ASP.NETt实现简单的文字水印
C/S系统中三层结构(Com/Com+)的测试成功实现
VB 二进制块读写类模块应用实例,包括一个文件拷贝和一个文件二进制比较的例子。
扫雷程序“布雷”代码(vb)
关于网络连接状态的编程
c#中ref和out参数使用时需要注意的问题
use Assembly to call a method
在VBA中调用AUTOCAD打印文件
在VS.NET的
昨天折腾了一晚上,哪位高手帮我看看!急!
Net是未来的趋势吗?
如何修改自定义Webpart 的标题(downmoon)
[收藏]ASP.Net生成静态HTML页 选择自 coofucoo 的 Blog

ASP.NET 中的 利用.NET语言开发自己的脚本语言(一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 49 ::
收藏到网摘: n/a


要利用.NET语言(例如:c# vb.net)开发自己的脚本语言必须实现2步:1.能够动态编译.NET 源代码2.动态调用.NET组件
首先我们介绍下动态条用.NET组件1.新建1个工程作为组件接口DynamicInterface创建新的类:using System;
namespace DynamicInterface{ public interface IDynamic { string getString(); }}
2.新建1个工程作为需要动态调用的组件DynamicClass引用DynamicInterface创建新的类:using System;
namespace DynamicCls{ public class DynamicClass:DynamicInterface.IDynamic //实现接口 { public DynamicClass() { } #region IDynamic 成员
public string getString() { // TODO: 添加 DynamicClass.getString 实现 return "Hello World Huhong"; }
#endregion }
3.新建1个工程来动态调用DynamicClassusing System;using System.Reflection;
using System.Threading;
namespace dynamicreference{ class DynamicReference { /// /// 应用程序的主入口点。 /// [STAThread] static void Main(string[] args) { string dllfilename=@"C:\DynamicClass.dll"; Thread.GetDomain().AssemblyLoad+=new AssemblyLoadEventHandler(DynamicReference_AssemblyLoad); Thread.GetDomain().AssemblyResolve+=new ResolveEventHandler(DynamicReference_AssemblyResolve); Assembly asm=System.Reflection.Assembly.LoadFile(dllfilename); Type type=asm.GetType("DynamicCls.DynamicClass",true); Object oh=Activator.CreateInstance(type); MethodInfo mi = type.GetMethod("getString"); Console.WriteLine(mi.Invoke(oh,null).ToString()); //利用反射机制运行 DynamicInterface.IDynamic id=(DynamicInterface.IDynamic)oh; //利用接口运行 Console.WriteLine(id.getString()); }

private static void DynamicReference_AssemblyLoad(object sender, AssemblyLoadEventArgs args) { Console.WriteLine("加载1个组件:"+args.LoadedAssembly.FullName ); }
private static Assembly DynamicReference_AssemblyResolve(object sender, ResolveEventArgs args) { Console.WriteLine("组件解析失败!"); return null; } }}
未完待续....