简单生活 发表于 2015-1-16 23:38:05

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比起来简直弱爆了!

莫相离 发表于 2015-1-20 10:46:45

我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

海妖 发表于 2015-1-20 10:48:06

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

柔情似水 发表于 2015-1-29 06:48:51

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

小魔女 发表于 2015-2-5 23:35:14

下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...

小妖女 发表于 2015-2-14 05:25:36

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

再现理想 发表于 2015-3-4 04:53:25

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

乐观 发表于 2015-3-11 17:06:03

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?

admin 发表于 2015-3-19 02:31:00

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

灵魂腐蚀 发表于 2015-3-27 05:15:38

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
页: [1]
查看完整版本: ASP网站制作之使用反射静态挪用类成员