网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VB.net > 正文
用.net动态创建类的实例
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
【简 介】
   看了网上很多关于DotNet动态创建类的实例的文章,我这里想总结一下,其实方法很简单,就是用“Activator.CreateInstance”。但是这个方法需要待创建的类的Type作为参数,为了获得该参数,可以利用[Assembly].GetType方法,这个方法只需要待创建的类的名称(名称字符串)就可以了,最后的问题就是要获得这个类所在的程序集  
  
 
  看了网上很多关于DotNet动态创建类的实例的文章,我这里想总结一下,其实方法很简单,就是用“Activator.CreateInstance”。但是这个方法需要待创建的类的Type作为参数,为了获得该参数,可以利用[Assembly].GetType方法,这个方法只需要待创建的类的名称(名称字符串)就可以了,最后的问题就是要获得这个类所在的程序集。如何获得待创建的类所在程序集,那么就解决了这个问题。 
大家可以参考http://www.cnblogs.com/ShadowK/archive/2006/11/14/560131.html,费了很多笔墨写了一个比较完整的动态构造类的设计器。其实,在获得程序集这个问题上,可以有更简单的办法,以下是我的做法。 
利用Microsoft.VisualBasic.vbCodeProvider(),如果是C#可以用CSharpCodeProvider(),将类文件编译成为DLL文件,然后利用[Assembly].LoadFrom("DLL 的绝对路径")加载该DLL。这样我们可以避免在那些创建DLL和Type的复杂代码。我告诉我的项目组成员这个例子后,强调要打开思路,Simple is perfect,凡事都尽量找简便的方法来实现,客户永远不会为我们那些复杂的代码多花一分钱。 
1.执行编译任务的方法: 

Public Shared Function CompileExecutable()Function CompileExecutable(ByVal sourceName As String, ByVal DLLPath As String, ByRef ReturnDLLName As String) As Boolean 
Dim sourceFile As FileInfo = New FileInfo(sourceName) 
Dim provider As CodeDomProvider = Nothing 
Dim compileOk As Boolean = False 

'' 根据原文件的扩展名选择code provider 
If sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".CS" Then 

provider = New Microsoft.CSharp.CSharpCodeProvider() 

ElseIf sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".VB" Then 

provider = New Microsoft.VisualBasic.VBCodeProvider() 

Else 
Console.WriteLine("原文件必须包含 .cs 或 .vb 扩展名") 
End If 

If Not provider Is Nothing Then 

'' 构造DLL文件的全路径 
Dim dllName As String = String.Format("{0}\{1}.dll", _ 
DLLPath, _ 
sourceFile.Name.Replace(".", "_")) 

ReturnDLLName = dllName 

Dim cp As CompilerParameters = New CompilerParameters() 

'' 设置编译控制参数 
cp.GenerateExecutable = False ''生成DLL,如果是True则生成exe文件 
cp.OutputAssembly = dllName 
cp.GenerateInMemory = False 
cp.TreatWarningsAsErrors = False 

'' 调用编译方法将原代码文件编译成DLL 
Dim cr 
  • 上一篇资讯: vb.net动态控件数组
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号