用.NET动态创建类的实例讲解
2009-05-12 22:33:01来源:未知 阅读 ()
看了网上很多关于DotNet动态创建类的实例的文章,我这里想总结一下,其实方法很简单,就是用“Activator.CreateInstance”。但是这个方法需要待创建的类的Type作为参数,为了获得该参数,可以利用[Assembly].GetType方法,这个方法只需要待创建的类的名称(名称字符串)就可以了,最后的问题就是要获得这个类所在的程序集。如何获得待创建的类所在程序集,那么就解决了这个问题。
利用Microsoft.VisualBasic.VBCodeProvider(),如果是C#可以用CSharpCodeProvider(),将类文件编译成为DLL文件,然后利用[Assembly].LoadFrom("DLL 的绝对路径")加载该DLL。这样我们可以避免在那些创建DLL和Type的复杂代码。我告诉我的项目组成员这个例子后,强调要打开思路,Simple is perfect,凡事都尽量找简便的方法来实现,客户永远不会为我们那些复杂的代码多花一分钱。
1.执行编译任务的方法:
以下为引用的内容: PublicSharedFunctionCompileExecutable()FunctionCompileExecutable(ByValsourceNameAsString,ByValDLLPathAsString,ByRefReturnDLLNameAsString)AsBoolean DimsourceFileAsFileInfo=NewFileInfo(sourceName) DimproviderAsCodeDomProvider=Nothing DimcompileOkAsBoolean=False '根据原文件的扩展名选择codeprovider IfsourceFile.Extension.ToUpper(CultureInfo.InvariantCulture)=".CS"Then provider=NewMicrosoft.CSharp.CSharpCodeProvider() ElseIfsourceFile.Extension.ToUpper(CultureInfo.InvariantCulture)=".VB"Then provider=NewMicrosoft.VisualBasic.VBCodeProvider() Else Console.WriteLine("原文件必须包含.cs或.vb扩展名") EndIf IfNotproviderIsNothingThen '构造DLL文件的全路径 DimdllNameAsString=String.Format("{0}{1}.dll",_ DLLPath,_ sourceFile.Name.Replace(".","_")) ReturnDLLName=dllName DimcpAsCompilerParameters=NewCompilerParameters() '设置编译控制参数 cp.GenerateExecutable=False'生成DLL,如果是True则生成exe文件 cp.OutputAssembly=dllName cp.GenerateInMemory=False cp.TreatWarningsAsErrors=False '调用编译方法将原代码文件编译成DLL DimcrAsCompilerResults=provider.CompileAssemblyFromFile(cp,_ sourceName) Ifcr.Errors.Count>0Then '显示编译错误 Console.WriteLine("编译错误{0}编译成{1}",_ sourceName,cr.PathToAssembly) DimceAsCompilerError ForEachceIncr.Errors Console.WriteLine("{0}",ce.ToString()) Console.WriteLine() Nextce Else '显示编译成功的消息 Console.WriteLine("原文件{0}编译成{1}成功完成.",_ sourceName,cr.PathToAssembly) EndIf '返回编译结果 Ifcr.Errors.Count>0Then compileOk=False Else compileOk=True EndIf EndIf ReturncompileOk EndFunction |
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:在.NET中字符串替换的五种方法
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- 如何创建和读取xml文件 2020-03-10
- .NET建造者模式讲解 2020-02-27
- ASP.Net分页的分页导航实例 2020-02-27
- asp.net多文件上传实例讲解 2020-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash