仓酷云

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

[学习教程] ASP网站制作之使用反射静态挪用类成员

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:38:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的静态(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>

[STAThread]

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 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
小魔女 该用户已被删除
5#
发表于 2015-2-5 23:35:14 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
小妖女 该用户已被删除
6#
发表于 2015-2-14 05:25:36 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
再现理想 该用户已被删除
7#
发表于 2015-3-4 04:53:25 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
乐观 该用户已被删除
8#
发表于 2015-3-11 17:06:03 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
admin 该用户已被删除
9#
发表于 2015-3-19 02:31:00 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-27 05:15:38 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 14:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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