ASP网站制作之使用反射静态挪用类成员
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的静态(C#)使用反射静态挪用类成员利用反射静态挪用类成员,必要Type类的一个办法:InvokeMember。对该办法的声明以下(摘抄于MSDN):
publicobjectInvokeMember(
stringname,
BindingFlagsinvokeAttr,
Binderbinder,
objecttarget,
object[]args
);
参数
name
String,它包括要挪用的机关函数、办法、属性或字段成员的称号。
-或-
空字符串(""),暗示挪用默许成员。
invokeAttr
一个位屏障,由一个或多个指定搜刮实行体例的BindingFlags构成。会见能够是BindingFlags之一,如Public、NonPublic、Private、InvokeMethod和GetField等。不必要指定查找范例。假如省略查找范例,则将使用BindingFlags.Public|BindingFlags.Instance。
binder
一个Binder工具,该工具界说一组属性并启用绑定,而绑定大概触及选择重载办法、强迫参数范例和经由过程反射挪用成员。
-或-
若为空援用(VisualBasic中为Nothing),则利用DefaultBinder。
target
要在其上挪用指定成员的Object。
args
包括传送给要挪用的成员的参数的数组。
前往值
暗示被挪用成员的前往值的Object。
备注:
以下BindingFlags选择标记可用于界说包括在搜刮中的成员:
为了猎取前往值,必需指定BindingFlags.Instance或BindingFlags.Static。
指定BindingFlags.Public可在搜刮中包括大众成员。
指定BindingFlags.NonPublic可在搜刮中包括非大众成员(即公有成员和受回护的成员)。
指定BindingFlags.FlattenHierarchy可包括条理布局上的静态成员。
以下BindingFlags润色符标记可用于变动搜刮的实行体例:
BindingFlags.IgnoreCase,暗示疏忽name的巨细写。
BindingFlags.DeclaredOnly,仅搜刮Type上声明的成员,而不搜刮被复杂承继的成员。
可使用以下BindingFlags挪用标记暗示要对成员接纳的操纵:
CreateInstance,暗示挪用机关函数。疏忽name。对其他挪用标记有效。
InvokeMethod,暗示挪用办法,而不挪用机关函数或范例初始值设定项。对SetField或SetProperty有效。
GetField,暗示猎取字段值。对SetField有效。
SetField,暗示设置字段值。对GetField有效。
GetProperty,暗示猎取属性。对SetProperty有效。
SetProperty暗示设置属性。对GetProperty有效。
上面经由过程例题对该办法举行复杂使用(我一向觉得,要让例题起到更简单了解笔墨的意义和感化,撰写的例题越复杂越直不雅越好。)
usingSystem;
usingSystem.Reflection;
namespaceConsoleApplication9
{
classLove
{
publicintfield1;
privatestring_name;
publicLove()
{
}
publicstringName
{
get
{
return_name;
}
set
{
_name=value;
}
}
publicintGetInt(inta)
{
returna;
}
publicvoidDisplay(stringstr)
{
Console.WriteLine(str);
}
}
///<summary>
///Class1的择要申明。
///</summary>
classClass1
{
///<summary>
///使用程序的主出口点。
///</summary>
staticvoidMain(string[]args)
{
//
//TODO:在此处增加代码以启动使用程序
//
Lovelove=newLove();
Typetype=love.GetType();
Objectobj=type.InvokeMember(null,
BindingFlags.DeclaredOnly|
BindingFlags.Public|BindingFlags.NonPublic|
BindingFlags.Instance|BindingFlags.CreateInstance,null,null,args);
//挪用没有前往值的办法
type.InvokeMember("Display",BindingFlags.InvokeMethod|BindingFlags.Public|BindingFlags.Instance,null,obj,newobject[]{"aldfjdlf"});
//挪用有前往值的办法
inti=(int)type.InvokeMember("GetInt",BindingFlags.InvokeMethod|BindingFlags.Public|BindingFlags.Instance,null,obj,newobject[]{1});
Console.WriteLine(i);
//设置属性值
type.InvokeMember("Name",BindingFlags.SetProperty,null,obj,newstring[]{"abc"});
</p>asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了! 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
页:
[1]