知识大全 用.NET动态创建类的实例讲解

Posted 文件

篇首语:老板给了我份说炒就炒的鱿鱼,我给了板来了份说滚就滚的旅行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用.NET动态创建类的实例讲解相关的知识,希望对你有一定的参考价值。

用.NET动态创建类的实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  看了网上很多关于DotNet动态创建类的实例的文章 我这里想总结一下 其实方法很简单 就是用 Activator CreateInstance 但是这个方法需要待创建的类的Type作为参数 为了获得该参数 可以利用[Assembly] GetType方法 这个方法只需要待创建的类的名称(名称字符串)就可以了 最后的问题就是要获得这个类所在的程序集 如何获得待创建的类所在程序集 那么就解决了这个问题

  大家可以参考// cnblogs /ShadowK/archive/ / / / 费了很多笔墨写了一个比较完整的动态构造类的设计器 其实 在获得程序集这个问题上 可以有更简单的办法 以下是我的做法

  利用Microsoft VisualBasic VBCodeProvider() 如果是C#可以用CSharpCodeProvider() 将类文件编译成为DLL文件 然后利用[Assembly] LoadFrom( DLL 的绝对路径 )加载该DLL 这样我们可以避免在那些创建DLL和Type的复杂代码 我告诉我的项目组成员这个例子后 强调要打开思路 Simple is perfect 凡事都尽量找简便的方法来实现 客户永远不会为我们那些复杂的代码多花一分钱

   执行编译任务的方法

以下是引用片段   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 pileOk 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( \\ 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 As CompilerResults = provider CompileAssemblyFromFile(cp  _   sourceName)   If cr Errors Count >   Then     显示编译错误   Console WriteLine( 编译错误   编译成   _   sourceName  cr PathToAssembly)   Dim ce As CompilerError   For Each ce In cr Errors   Console WriteLine(    ce ToString())   Console WriteLine()   Next ce   Else     显示编译成功的消息   Console WriteLine( 原文件   编译成   成功完成  _   sourceName  cr PathToAssembly)   End If     返回编译结果   If cr Errors Count >   Then   pileOk = False   Else   pileOk = True   End If   End If   Return pileOk   End Function

   编译DLL 并动态创建类的实例 (这里类的原文件是Class vb文件 放在WebSite的App_Code文件夹中了 实际使用时可以放在任意物理位置 )

以下是引用片段   Dim strSourceFileName As String = Server MapPath( ~/App_Code/Class vb )  类文件的全路径   Dim strDllPath As String = Server MapPath( ~/App_Code )  编译后的DLL文件存放的位置   Dim strDllName As String =    DLL的全路径(返回值)   CompileExecutable(strSourceFileName  strDllPath  strDllName)  编译原文件为DLL文件   Dim a As [Assembly] = [Assembly] LoadFrom(strDllName)  加载DLL   Dim myType As System Type = a GetType( Class )  获得Class 的Type   Dim obj As Object = Activator CreateInstance(myType)  获得Class 的实例

   Class vb原文件

cha138/Article/program/net/201311/15309

相关参考

知识大全 类的实例创建

  矩形类Rectangle中也许你想把矩形的相关信息写入类如  intwidthheight;    当然你还可以写入其它信息但或许长和宽对简单的矩形来说已足够了现在类的定义如下所示  public

知识大全 实例讲解.NET多线程执行函数

实例讲解.NET多线程执行函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里为什么会出现多

知识大全 .NET上根据字符串动态创建控件

.NET上根据字符串动态创建控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先利用Syst

知识大全 基于asp.net的web页面动态控件创建以及使用

 摘要web设计中有很多场合页面的控件要动态创建甚至只能动态创建这样可以增加页面的灵活性但是给程序员带来了一些麻烦比如要使用动态创建的控件怎么使用都是要求解决的问题本文基于aspnet简要介绍了页面的

知识大全 基于ASP.NET的Web动态控件创建

基于ASP.NET的Web动态控件创建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要web

知识大全 asp.net StreamReader 创建文件的实例代码

asp.netStreamReader创建文件的实例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ASP.NET动态生成静态页面的实例代码

ASP.NET动态生成静态页面的实例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!生成静态页有

知识大全 ASP.NET入门教程 1.2 创建动态站点的强大工具

ASP.NET入门教程1.2创建动态站点的强大工具  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 js动态创建表格,删除行列的小例子

这篇文章介绍了js动态创建表格删除行列的实例代码有需要的朋友可以参考一下 复制代码代码如下:cha138/Article/program/Java/JSP/201311/20196

知识大全 构造函数和析构函数

  类构造函数  本节将讨论三种类构造函数  类构造函数的类型  注释  实例  用于创建并初始化类的实例  私有  在类之外不可访问的特殊类型实例构造函数无法用私有构造函数来实例化类  静态  在创