仓酷云
标题:
ASP.NET编程:使用技能:用.net静态创立类的实例
[打印本页]
作者:
海妖
时间:
2015-1-16 22:49
标题:
ASP.NET编程:使用技能:用.net静态创立类的实例
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。创立|静态|技能 看了网上良多关于DotNet静态创立类的实例的文章,我这里想总结一下,实在办法很复杂,就是用“Activator.CreateInstance”。可是这个办法必要待创立的类的Type作为参数,为了取得该参数,能够使用[Assembly].GetType办法,这个办法只必要待创立的类的称号(称号字符串)就能够了,最初的成绩就是要取得这个类地点的程序集。怎样取得待创立的类地点程序集,那末就办理了这个成绩。
人人能够参考http://www.ckuyun.com/ShadowK/archive/2006/11/14/560131.html,费了良多文字写了一个对照完全的静态机关类的计划器。实在,在取得程序集这个成绩上,能够有更复杂的举措,以下是我的做法。
使用Microsoft.VisualBasic.VBCodeProvider(),假如是C#能够用CSharpCodeProvider(),将类文件编译成为DLL文件,然后使用[Assembly].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[Assembly]=[Assembly].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
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
作者:
爱飞
时间:
2015-1-21 19:03
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者:
小女巫
时间:
2015-1-30 21:53
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
作者:
飘飘悠悠
时间:
2015-2-6 16:11
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
作者:
再现理想
时间:
2015-2-17 02:54
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
作者:
蒙在股里
时间:
2015-3-5 14:48
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
作者:
愤怒的大鸟
时间:
2015-3-12 08:15
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
作者:
老尸
时间:
2015-3-19 19:11
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2