|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。在我的文章《C#基于接口的编程》中,我议论了利用笼统的接口作为编程典范的各类长处。分别接口和实行历程,如今一定不是新的头脑,实践上它是com编程的中心。大概基于接口的在明显的特性是多态性和立即反省(RTTI).RTTI同意客户端程序在运转时会见工具。比方,假如一个工具实行IAthlete接口,一个客户端程序可以查找然后绑定这个接口用于挪用和定位另外一个接口。
查询接口是壮大的,是com+的基本。同时,它对可以在一个工具上实行接口导向又是极度有效的和明白需要的,这是.net一个出格主要的观点。在先容这个观点之前,让我们再回忆一些信息关于在.net中功效性和散布的基本元素--汇合。
在COM(+),组件睁开的逻辑和物理单位是一个.dll文件。在.net平台中,睁开的基本单位是汇合。与COM(+)组件分歧的是一个.net也许是有多个文件构成,只管它被看做是一个单一的何不成支解的功效和实行单位。一个汇合文件也是自形貌的,它包括被称之为两头言语的控制代码和附加的元数据,这个元数据给想绑定到这些代码的客户供应丰厚的信息。.net的每一个汇合是出名的清双数据布局。清单包括以下信息:
1、姓名和版本信息
2、别的汇合的参考信息
3、平安界限的信息。
4、汇合中一切范例的信息
毫无疑问,汇合清单相似于COM(+)的范例库。清单有在范例库中不存在的长处。这个凌驾了这一课的局限,我们将在这篇文章的第二部分举行报告。被使用.net汇合的客户端程序将要利用清单。由于每一个汇合包括元数据的很多信息,客户程序在运转时可以失掉汇合的内容。这个历程就叫做reflection.Reflection不但可以查询基本类,并且运转时能静态挪用办法,乃至于输入可以间接实行的IL代码。在你的代码中有两种办法来利用reflection,ReflectionAPI和System.Reflection名字空间。System.reflection是极度卖力的,它包括快要40个类。在文章的其他部分,我将先容reflection的基本,怎样用它区查询汇合类,办法,和运转时挪用办法的范例。为了树模在.net中的reflection名字空间,我将用上面的"reflection"类来讲明:
//Reflect.cs
namespaceCSharpReflectionSamples
{
usingSystem;
///<summary>
///Thereflectclasswillbeusedtodemonstratethebasicsof
///.NETreflection.Thisclasscontainsprivatemembervars,
///aconstructor,asamplemethod,andsampleaccessormethods.
///</summary>
publicclassReflect
{
//privatemembervariables
privateintintTest;
privatestringstrTest;
//constructor
publicReflect(intintData)
{
//constructorlogic
intTest=intData;
}
//basicmethod
publicintAMethod(intintData)
{
returnintData*intData;
}
publicstringS
{
get
{
//returnmembervar
returnstrTest;
}
set
{
//setmembervar
S=value;
}
}
}
}
正如你所看到的那样,这个类包括一个机关器,一个例子办法,一个例子存取办法(失掉和设置)。在System.Reflaction名字空间中心是一个名为type的类。这个type范例包括很多办法和到很多类信息的一种登录出口。Type类参考能够靠typeof大概GetType的办法失掉。下表枚举了一些类范例的办法,包含示例GetTypeof和typeof办法的代码段。
Name
Description
GetFields()
ReturnsanarrayofFieldInfoobjectsdescribingthefieldsintheclass.
GetMethods()
ReturnsanarrayofMethodInfoobjectsdescribingthemethodsoftheclass.
GetConstructors()
Returnsalltheconstructorsforanobject.
GetInterfaces()
Getsallinterfacsimplementedbythetype.
GetMembers()
Getsallthemembers(fields,methods,events,etc.)ofthecurrenttype.
InvokeMember()
Invokesamemberofthecurrenttype.
BaseType
GetsaTypeobjectforthetypesimmediatebasetype.
IsAbstract
Returnstrueifthetypeisabstract.
IsClass
Returnstrueifthetypeisaclass.
IsEnum
Returnstrueifthetypeisanenum.
IsNestedPublic
Returnstrueifatypeisnestedwithinanotherandispublic.
Namespace
Retrievesthenamespaceofthetype.
namespaceCSharpReflectionSamples
{
usingSystem;
usingSystem.Reflection;
///<summary>
///SummarydescriptionforClient.
///</summary>
publicclassClient
{
publicstaticvoidMain()
{
//thetypeofoperatorandtheGetTypemethod
//bothreturnaTypeobject.
Typetype1=typeof(Reflect);
ReflectobjTest=newReflect(0);
Typetype2=objTest.GetType();
Console.WriteLine("TypeofobjTestis{0}",type2);
}
}
}
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 |
|