|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。我们先看看一样平常的反射的静态办法查找
上面为ms自带的例子ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemreflectionmethodbaseclassinvoketopic.htm
publicclassA
{
publicvirtualintmethod(){return0;}
}
publicclassB
{
publicvirtualintmethod(){return1;}
}
classMymethodinfo
{
publicstaticintMain()
{
Console.WriteLine("
Reflection.MethodInfo");
AMyA=newA();
BMyB=newB();
//GettheTypeandMethodInfo
TypeMyTypea=Type.GetType("A");
MethodInfoMymethodinfoa=MyTypea.GetMethod("method");
TypeMyTypeb=Type.GetType("B");
MethodInfoMymethodinfob=MyTypeb.GetMethod("method");
//GetanddisplaytheInvokemethod
Console.Write("
Firstmethod-"+MyTypea.FullName+
"returns"+Mymethodinfoa.Invoke(MyA,null));
Console.Write("
Secondmethod-"+MyTypeb.FullName+
"returns"+Mymethodinfob.Invoke(MyB,null));
return0;
}
}
上面是用接口查询办法,实例创立工具,再实行实例工具
usingSystem;
publicinterfaceIPoint
{
//returnnowclassofshixinterface
stringReturnNowClass();
}
下面文件为ClassSuc.cs编纂为ClassSuc.dll。
usingSystem;
namespaceClassLib1
{
publicclassClass1:IPoint
{
publicClass1()
{
}
publicstringReturnNowClass()
{
return"wecloneExecuteClassLib1Class1";
}
}
}
将ClassSuc.dll的也增加到下面文件,Class1完成了Ipoint接口
编纂文件为ClassLib1.dll
usingSystem;
namespaceClassLib2
{
publicclassClass2:IPoint
{
publicClass2()
{
}
publicstringReturnNowClass()
{
return"ClassLib2"+"Class2"+"weclone";
}
}
}
将ClassSuc.dll的也增加到下面文件,Class2完成了Ipoint接口
编纂文件为ClassLib2.dll
大概你已看和做的不腻烦了,你大概要要问,你究竟想讲甚么????
注重,将下面的三个dllcopy在统一路径下这里为“C:/test”
usingSystem;
usingSystem.Reflection;
classLoadExe
{
[STAThread]
staticvoidMain(string[]args)
{
//Usethefilenametoloadtheassemblyintothecurrentapplicationdomain.
Assemblyb;
b=Assembly.LoadFrom(@"C:/test/ClassSuc.dll");
Type[]mytypes=b.GetTypes();
//showb中的接口IPoint
foreach(Typetinmytypes)
{
Console.WriteLine(t.FullName);
}
MethodInfoMethod=mytypes[0].GetMethod("ReturnNowClass");
//Getthemethodtocall.
Assemblya;
stringk=Console.ReadLine();
//输出年夜于10时,挪用ClassLib1.dll的办法不然挪用ClassLib2的办法
if(Convert.ToInt32(k)>10)
a=Assembly.LoadFrom(@"C:/test/ClassLib1.dll");
else
a=Assembly.LoadFrom(@"C:/test/ClassLib2.dll");
Type[]types=a.GetTypes();
//showb中的ClassLib1.Class1或ClassLib2.Class2
foreach(Typetintypes)
{
Console.WriteLine(t.FullName);
}
//CreateaninstanceoftheHelloWorldclass.
Objectobj=Activator.CreateInstance(types[0]);
//Invokethemethod.
Console.WriteLine(Method.Invoke(obj,null));
Console.ReadLine();
}
}
实行效果为:
Ipoint
这时候请求输出输出
13
持续实行显现
ClassLib1.Class1
wecloneExecuteClassLib1Class1
请求输出时输出
5
持续实行显现
ClassLib2.Class2
wecloneExecuteClassLib2Class2
完成了甚么,经由过程接口静态加载程序集。
意义:反射机制完成静态插拔,只需变动设置文件和XCOPY响应的组件,
能够不必编译就间接定制出一个特定体系
弱点:功能打击速率慢
有的人还要问,既然可以静态加载程序集
那怎样显现卸载程序集CLR不撑持卸载程序集但能够卸载AppDomain包括的一切的程序集。AppDomain.Unload办法卸载指定的使用程序域。
本还想写一文章报告静态程序集但本人了解不敷,又以为意义不年夜以是把那些器材,本人也不想学那些器材(太急躁的体现),以是提到这里来。
静态程序集是编译器或工具在运转时收回元数据和MSIL,并可在磁盘上天生可移植可实行(PE)文件(分歧于下面的谁人静态加载程序集)
在运转时界说程序集,然后运转这些程序集并/或将它们保留到磁盘。
在运转时界说新程序会合的模块,然后运转这些模块并/或将它们保留到磁盘。
在运转时界说范例,创立这些范例的实例,并挪用这些范例的办法。
程序集---》模块---》范例―》实例的办法
详细见
ms-help://MS.NETFrameworkSDK.CHS/cpguidenf/html/cpconemittingdynamicassemblies.htm
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemappdomainclassdefinedynamicassemblytopic.htm
感激bitfan(数字天下一伟人)()使得本人有如许的劳绩
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 |
|