仓酷云

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

[学习教程] ASP.NET网站制作之属性和元数据 -- zt

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:50:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。属性和元数据


C#和C++之间一个明显的区分是它供应了对元数据的撑持:有关类、工具、办法等其他实体的数据。属性能够分为二类:一类以CLR的一部分的情势呈现,另外一种是我们本人创立的属性,CLR属性用来撑持串行化、分列和COM协异性等。一些属性是针对一个组合体的,有些属性则是针对类或界面,它们也被称作是属性方针。

将属性放在属性方针前的方括号内,属性就能够感化于它们的属性方针。

[assembly:AssemblyDelaySign(false)]
[assembly:AssemblyKeyFile(".keyFile.snk")]

或用逗号将各个属性分隔:

[assembly:AssemblyDelaySign(false),
assembly:AssemblyKeyFile(".keyFile.snk")]



自界说的属性


我们能够恣意创立自界说属性,并在以为符合的时分利用它们。假定我们必要跟踪bug的修复情形,就必要创建一个包括bug的数据库,但必要将bug呈报与专门的修改情形绑定在一起,则大概在代码中增加以下所示的正文:

//Bug323fixedbyJesseLiberty1/1/2005.

如许,在源代码中就能够一览无余地懂得bug的修改情形,但假如假如把相干的材料保留在数据库中大概会更好,如许就更便利我们的查询事情了。假如一切的bug呈报都利用不异的语法那就更好了,但这时候我们就必要一个定制的属性了。我们大概利用上面的内容取代代码中的正文:

[BugFix(323,"JesseLiberty","1/1/2005")Comment="Offbyoneerror"]

与C#中的其他元素一样,属性也是类。定制化的属性类必要承继System.Attribute:

publicclassBugFixAttribute:System.Attribute

我们必要让编译器晓得这个属性能够跟甚么范例的元素,我们能够经由过程以下的体例来指定该范例的元素:

[AttributeUsage(AttributeTargets.ClassMembers,AllowMultiple=true)]

AttributeUsage是一个感化于属性的属性━━元属性,它供应的是元数据的元数据,也即有关元数据的数据。在这类情形下,我们必要传送二个参数,第一个是方针(在本例中是类成员。),第二个是暗示一个给定的元素是不是能够承受多于一个属性的标志。AllowMultiple的值被设置为true,意味着类成员能够有多于一个BugFixAttribute属性。假如要团结二个属性方针,可使用OR操纵符毗连它们。

[AttributeUsage(AttributeTargets.Class|AttributeTargets.Interface,AllowMultiple=true)]

下面的代码将使一个属性从属于一个类或一个界面。

新的自界说属性被定名为BugFixAttribute。定名的划定规矩是在属性名以后增加Attribute。在将属性指派给一个元素后,编译器同意我们利用精简的属性名挪用这一属性。因而,上面的代码是正当的:

[BugFix(123,"JesseLiberty","01/01/05",Comment="Offbyone")]

编译器将起首查找名字为BugFix的属性,假如没有发明,则查找BugFixAttribute。

每一个属性必需最少有一个机关器。属性能够承受二品种型的参数:情况参数和定名参数。在后面的例子中,bugID、编程职员的名字和日期是情况参数,正文是定名参数。情况参数被传送到机关器中的,并且必需按在机关器中界说的按次传送。

publicBugFixAttribute(intbugID,stringprogrammer,stringdate)
{
this.bugID=bugID;
this.programmer=programmer;
this.date=date;
}

Namedparametersareimplementedasproperties.



属性的利用


为了对属性举行测试,我们创立一个名字为MyMath的复杂类,并给它增加二个函数,然后给它指定bugfix属性。

[BugFixAttribute(121,"JesseLiberty","01/03/05")]

[BugFixAttribute(107,"JesseLiberty","01/04/05",
Comment="Fixedoffbyoneerrors")]
publicclassMyMath



这些数据将与元数据存储在一同。上面是完全的源代码及其输入:



自界说属性

usingSystem;
//创立被指派给类成员的自界说属性
[AttributeUsage(AttributeTargets.Class,
AllowMultiple=true)]
publicclassBugFixAttribute:System.Attribute
{
//地位参数的自界说属性机关器
publicBugFixAttribute
(intbugID,
stringprogrammer,
stringdate)
{
this.bugID=bugID;
this.programmer=programmer;
this.date=date;
}
publicintBugID
{
get
{
returnbugID;
}
}

//定名参数的属性
publicstringComment
{
get
{
returncomment;
}
set
{
comment=value;
}
}

publicstringDate
{
get
{
returndate;
}
}

publicstringProgrammer
{
get
{
returnprogrammer;
}
}

//专有成员数据
privateintbugID;
privatestringcomment;
privatestringdate;
privatestringprogrammer;
}

//把属性指派给类

[BugFixAttribute(121,"JesseLiberty","01/03/05")]
[BugFixAttribute(107,"JesseLiberty","01/04/05",
Comment="Fixedoffbyoneerrors")]
publicclassMyMath
{

publicdoubleDoFunc1(doubleparam1)
{
returnparam1+DoFunc2(param1);
}

publicdoubleDoFunc2(doubleparam1)
{
returnparam1/3;
}

}

publicclassTester
{
publicstaticvoidMain()
{
MyMathmm=newMyMath();
Console.WriteLine("CallingDoFunc(7).Result:{0}",
mm.DoFunc1(7));
}
}



输入:

CallingDoFunc(7).Result:9.3333333333333339

象我们看到的那样,属性对输入相对没有影响,创立属性也不会影响代码的功能。到今朝为止,读者也只是在听我叙述有关属性的成绩,利用ILDASM扫瞄元数据,就会发明属性的确是存在的。

[img=1border=0style=,1src=]http://www.ckuyun.com/[/img]

我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:)
爱飞 该用户已被删除
沙发
发表于 2015-1-20 05:34:38 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-28 18:54:22 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
老尸 该用户已被删除
地板
发表于 2015-2-5 18:02:58 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
山那边是海 该用户已被删除
5#
发表于 2015-3-3 12:22:53 | 只看该作者
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-11 11:02:55 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
admin 该用户已被删除
7#
发表于 2015-3-18 07:26:07 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-25 13:21:12 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-3 14:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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