|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。映照
在很多情形下,我们必要一种办法,可以从元数据中会见属性,C#供应了对映照的撑持以会见元数据。经由过程初始化MemberInfo范例工具,System.Reflection名字空间中的这个工具能够用来发明成员的属性,对元数据举行会见。
System.Reflection.MemberInfoinf=typeof(MyMath);
对MyMath范例挪用typeof操纵符,它前往一个由承继MemberInfo而天生的Type范例的变量。
下一步是对MemberInfo工具挪用GetCustomAttributes,并将但愿失掉的属性的范例作为一个参数传送给GetCustomAttributes。我们将失掉一个工具数组,数组的每一个成员的范例都是BugFixAttribute。
object[]attributes;
attributes=Attribute.GetCustomAttributes(inf,typeof(BugFixAttribute));
我们就能够遍历这个数组了,打印BugFixAttribute工具的数组,代码下所示:
属性的打印
publicstaticvoidMain()
{
MyMathmm=newMyMath();
Console.WriteLine("CallingDoFunc(7).Result:{0}",
mm.DoFunc1(7));
//猎取成员信息并利用它会见自界说的属性
System.Reflection.MemberInfoinf=typeof(MyMath);
object[]attributes;
attributes=
Attribute.GetCustomAttributes(inf,typeof(BugFixAttribute));
//遍历一切的属性
foreach(Objectattributeinattributes)
{
BugFixAttributebfa=(BugFixAttribute)attribute;
Console.WriteLine("
BugID:{0}",bfa.BugID);
Console.WriteLine("Programmer:{0}",bfa.Programmer);
Console.WriteLine("Date:{0}",bfa.Date);
Console.WriteLine("Comment:{0}",bfa.Comment);
}
}
范例发明
我们能够经由过程映象的办法来研讨一个组合实体的内容,假如要创建必要显现组合体外部信息的工具或静态地挪用组合体中的路子,这一办法长短常有效的。
经由过程映象的办法,我们能够晓得一个模块、办法、域、属性的范例,和该范例的每一个办法的旌旗灯号、该类撑持的界面和该类的超等类。我们能够经由过程以下的情势,用Assembly.Load静态办法静态地加载一个组合体:
publicstaticAssembly.Load(AssemblyName)
然后,能够将它传送到中心库中。
Assemblya=Assembly.Load("Mscorlib.dll");
一旦加载了组合体,我们能够经由过程挪用GetTypes前往一个Type工具数组。Type工具是映照的中心,它暗示类、界面、数组、值和列举等的范例界说。
Type[]types=a.GetTypes();
组合开会前往一个范例的数组,我们可使用foreach-loop布局显现该数组,其输入将有好几页文档之多,上面我们从中找一小段:
TypeisSystem.TypeCode
TypeisSystem.Security.Util.StringExpressionSet
TypeisSystem.Text.UTF7Encoding$Encoder
TypeisSystem.ArgIterator
TypeisSystem.Runtime.Remoting.JITLookupTable
1205typesfound
我们失掉了一个内容为中心库中范例的数组,能够将它们都打印出来,该数组将有1205个项。
对一品种型映照我们也能够对组合体中一品种型举行映照。为此,我们可使用GetType办法从组合体中剖析出一个范例:
[img=1border=0style=,1src=]http://www.ckuyun.com/[/img]
也许C#刚上市的时候有些抄袭Java吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但Java在模仿C#,而且他从来都没能跟得上C#的脚步。 |
|