仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 745|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET教程之.Net Framework 2.0范型的反射利用

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到java编译器那么简易。  在.NetFramework2.0中引进了范型(Generic)的观点,这能够说是一个严重的改善它的优点我在这里也不必多说,到网上能够找到十分多的申明。

  我在这里要和人人说的是怎样经由过程反射利用范型的手艺。

  一:起首看看范型的FullName

List<string>list=newList<string>();

System.Console.WriteLine(list.GetType().FullName);
System.Console.WriteLine();
  这个语句失掉的是:

System.Collections.Generic.List`1[[System.String,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]。
  好长呀,剖析一下个中的格局会看出一下几个东东。

System.Collections.Generic.List->申明该Type是甚么范例的。
  1、->应当是范型的标记。

System.String,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089->是string范例的FullName。

  那末在看看这个语句会呈现甚么?

Dictionary<string,int>dic=newDictionary<string,int>();
System.Console.WriteLine(dic.GetType().FullName);
System.Console.WriteLine();
  了局是:

System.Collections.Generic.Dictionary`2[[System.String,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]。
  更长,剖析一下:

System.Collections.Generic.Dictionary->申明该Type是甚么范例的。
  2->仍是是范型的标记。

System.String,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089->是string范例的FullName。

System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089->是int范例的FullName。
  从下面的例子能够看出范型的范例和1.1时增添了两个部分,分离是范型的标识部分和范型的参数范例FullName部分。

  起首看一下标记部分`1和`2,推测`标识了该范例是范型、前面的数字部分是申明了该范型必要几个范型参数。

  如今仍是推测,上面依据推测来使用我们本人的反射实验一下吧:

  二:范型反射的实验

  看看上面的代码:

stringtlistStr="System.Collections.Generic.List`1[System.String]";

TypetList=Type.GetType(tlistStr);

Objectolist=System.Activator.CreateInstance(tList);

MethodInfoaddMList=tList.GetMethod("Add");

addMList.Invoke(olist,newobject[]{"zhx"});

Console.WriteLine(olist.ToString());

System.Console.WriteLine();

stringtDicStr="System.Collections.Generic.Dictionary`2[[System.String],[System.Int32]]";

TypetDic=Type.GetType(tDicStr);

ObjectoDic=Activator.CreateInstance(tDic);

MethodInfoaddMDic=tDic.GetMethod("Add");

addMDic.Invoke(oDic,newobject[]{"zhx",1});

Console.WriteLine(oDic.ToString());

System.Console.WriteLine();
  测试经由过程。不外人人要注重了。范型中的基本范例如:string,int不克不及利用简写的,假如把System.Collections.Generic.List`1[System.String]写成System.Collections.Generic.List`1[string]是不克不及够失掉准确范例的。

  三:自已界说的范型反射的利用

  起首本人界说一个范型类:

namespaceRefTest
{
 publicclassBaseClass<T,V,O>
 {
  Tt;
  Vv;
  Oo;
  publicvoidSetValue(Tpt,Vpv,Opo)
  {
   this.t=pt;
   this.v=pv;
   this.o=po;
  }

  publicoverridestringToString()
  {
   returnstring.Format("T:{0}V:{1}O:{2}",t.ToString(),v.ToString(),o.ToString());
  }
 }
}

  利用反射创立范例和挪用办法:

stringtBaseClassStr="RefTest.BaseClass`3[[System.String],[System.Int32],
[System.Collections.Generic.Dictionary`2[[System.String],[System.Int32]]]]";

TypetBaseClass=Type.GetType(tBaseClassStr);

ObjectoBaseClass=Activator.CreateInstance(tBaseClass);

MethodInfoaddMBaseClass=tBaseClass.GetMethod("SetValue");

addMBaseClass.Invoke(oBaseClass,newobject[]{"zhx",1,oDic});

Console.WriteLine(oBaseClass.ToString());

System.Console.WriteLine();

  测试乐成。也不知道,我同学昨天说数据挖掘很好。
分手快乐 该用户已被删除
沙发
发表于 2015-1-18 21:52:38 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-23 19:37:08 | 只看该作者
PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
金色的骷髅 该用户已被删除
地板
发表于 2015-1-31 19:38:36 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 21:30:11 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
小魔女 该用户已被删除
6#
发表于 2015-2-18 19:56:40 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
只想知道 该用户已被删除
7#
发表于 2015-3-6 10:12:20 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
活着的死人 该用户已被删除
8#
发表于 2015-3-13 00:06:12 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
小妖女 该用户已被删除
9#
发表于 2015-3-20 06:10:39 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 20:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表