海妖 发表于 2015-1-16 22:49:57

ASP.NET编程:使用技能:用.net静态创立类的实例

如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。创立|静态|技能  看了网上良多关于DotNet静态创立类的实例的文章,我这里想总结一下,实在办法很复杂,就是用“Activator.CreateInstance”。可是这个办法必要待创立的类的Type作为参数,为了取得该参数,能够使用.GetType办法,这个办法只必要待创立的类的称号(称号字符串)就能够了,最初的成绩就是要取得这个类地点的程序集。怎样取得待创立的类地点程序集,那末就办理了这个成绩。
  人人能够参考http://www.ckuyun.com/ShadowK/archive/2006/11/14/560131.html,费了良多文字写了一个对照完全的静态机关类的计划器。实在,在取得程序集这个成绩上,能够有更复杂的举措,以下是我的做法。
  使用Microsoft.VisualBasic.VBCodeProvider(),假如是C#能够用CSharpCodeProvider(),将类文件编译成为DLL文件,然后使用.LoadFrom("DLL的相对路径")加载该DLL。如许我们能够制止在那些创立DLL和Type的庞大代码。我告知我的项目构成员这个例子后,夸大要翻开思绪,Simpleisperfect,凡事都只管找烦琐的办法来完成,客户永久不会为我们那些庞大的代码多花一分钱。
  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
  2.编译DLL,并静态创立类的实例。(这里类的原文件是Class1.vb文件,放在WebSite的App_Code文件夹中了,实践利用时能够放在恣意物理地位。)
  DimstrSourceFileNameAsString=Server.MapPath("~/App_Code/Class1.vb")类文件的全路径
  DimstrDllPathAsString=Server.MapPath("~/App_Code")编译后的DLL文件寄存的地位
  DimstrDllNameAsString=""DLL的全路径(前往值)
  CompileExecutable(strSourceFileName,strDllPath,strDllName)编译原文件为DLL文件
  DimaAs=.LoadFrom(strDllName)加载DLL
  DimmyTypeAsSystem.Type=a.GetType("Class1")取得Class1的Type
  DimobjAsObject=Activator.CreateInstance(myType)取得Class1的实例
  3.Class1.vb原文件
  PublicClassClass1ClassClass1
  PubliciAsInteger
  EndClass
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。

小妖女 发表于 2015-1-18 11:00:26

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

爱飞 发表于 2015-1-21 19:03:25

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

小女巫 发表于 2015-1-30 21:53:51

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

飘飘悠悠 发表于 2015-2-6 16:11:21

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

再现理想 发表于 2015-2-17 02:54:56

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!

蒙在股里 发表于 2015-3-5 14:48:58

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

愤怒的大鸟 发表于 2015-3-12 08:15:47

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。

老尸 发表于 2015-3-19 19:11:02

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
页: [1]
查看完整版本: ASP.NET编程:使用技能:用.net静态创立类的实例