仓酷云

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

[学习教程] ASP.NET网站制作之.NET 2.0 泛型在实践开辟中的一次小使用...

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

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

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

x
说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。  早闻.NET2.0中泛型的台甫,但一向未在实践开辟中利用。
  比来在开辟博客园网站程序的过程当中体验了一下。
  使用场景:
  在设置文件中经由过程反序列化读取响应的邮件设置。
  设置文件示例:
<BlogConfigurationSettings>
<MailSettings>
<MailSettingName="ApproveEmail"SmtpServer="smtp.126.com"EmailFrom=""UserName=""PassWord=""></MailSetting>
<MailSettingName="ContactEmail"SmtpServer="smtp.163.com"EmailFrom=""UserName=""PassWord=""></MailSetting>
</MailSettings>
</BlogConfigurationSettings>
  功效申明:
经由过程该设置文件,反序列化失掉BlogConfigurationSettings实例的属性MailSettings,然后依据关头字失掉响应的MailSetting,好比:名为ApproveEmail的MailSetting。
MailSetting的界说:
MailSetting
[Serializable]
publicclassMailSetting
{
privatestring_name;
[XmlAttribute("Name")]
publicstringName
{
get{return_name;}
set{_name=value;}
}
privatestring_smtpServer;
[XmlAttribute("SmtpServer")]
publicstringSmtpServer
{
get{return_smtpServer;}
set{_smtpServer=value;}
}
privatestring_mailFrom;
[XmlAttribute("MailFrom")]
publicstringMailFrom
{
get{return_mailFrom;}
set{_mailFrom=value;}
}
privatestring_username;
[XmlAttribute("UserName")]
publicstringUserName
{
get{return_username;}
set{_username=value;}
}
privatestring_password;
[XmlAttribute("Password")]
publicstringPassword
{
get{return_password;}
set{_password=value;}
}
publicstringKey
{
get{returnthis.Name;}
}

}
  假如不利用泛型,我们能够经由过程数组大概汇合类来完成。
  关于数组,我们必要在BlogConfigurationSettings举行如许的界说:
privateMailSetting[]__mailSettings;
[XmlArray("MailSettings")]
publicMailSetting[]MailSettings
{
get{returnthis._mailSettings;}
set{this._mailSettings=value;}
}
  我们还必要写一个办法往列举数组元素,依据关头字前往响应的MailSetting。
  关于汇合类,必要在BlogConfigurationSettings举行如许的界说:
privateMailSettingColletion_mailSettings;
[XmlArray("MailSettings")]
publicMailSettingColletionMailSettings
{
get{returnthis._mailSettings;}
set{this._mailSettings=value;}
}
  我们必要写一个MailSettingColletion类,而且在MailSettingColletion中完成一个办法往依据关头字查找响应的MailSetting。
  关于泛型,我们只需在BlogConfigurationSettings举行以下的界说:
privateList<MailSetting>_mailSettings;
[XmlArray("MailSettings")]
publicList<MailSetting>MailSettings
{
get{return_mailSettings;}
set{_mailSettings=value;}
}
  然后只需上面的一行代码就可以依据关头字失掉响应的MailSetting:
BlogConfigurationSettings.MailSettings.Find(delegate(MailSettingmailSetting){returnmailSetting.Key=="ApproveEmail";})
  Find办法的参数范例是Predicate<T>,它的界说是:
publicdelegateboolPredicate<T>(Tobj)
  也就是一个参数为泛型,前往值为bool的托付范例。
  Find的功效就是列举List<T>中的元素,并以每一个元素作为托付的参数挪用托付,实践的托付办法是经由过程Find参数传送过去的,当挪用的托付前往true时,前往以后元素。
  你也能够将下面的Find参数中的代码写为一个独自的办法,然后将办法名作为Find的参数。
BlogConfigurationSettings.MailSettings.Find(IsMe);
publicboolIsMe(MailSettingmailSetting)
{
returnmailSetting.Key=="ApproveEmail";
}
  关于如许的代码,你当即会感应不恬逸,如许岂不要为每一个关头字写一个办法,你想应当如许写:
publicboolIsMe(MailSettingmailSetting,stringkey)
{
returnmailSetting.Key==key;
}
  如许写固然好啊,但是Find却分歧意,它的参数只同意是带有一个参数的办法。
  那怎样办理这个成绩呢?
  我想到的一个办理办法,写一个MailSettingPredicate类:
publicclassMailSettingPredicate
{
privatestringkey;
publicstringKey
{
get{returnkey;}
set{key=value;}
}
publicboolIsMe(MailSettingmailSetting)
{
returnmailSetting.Key==this.key;
}
}
  在挪用IsMe之前,先设置MailSettingManager.Key的值,代码以下:
MailSettingPredicatepredicate=newMailSettingPredicate();
predicate.Key="ApproveEmail";
Config.Settings.MailSettings.Find(predicate.IsMe);
predicate.Key="ContactEmail";
Config.Settings.MailSettings.Find(predicate.IsMe);
  我在实践开辟中方才利用.NET2.0的泛型,写这篇文章是想加深本人的了解,同时但愿给不熟习.NET2.0泛型的伴侣供应一点参考,不敷的地方,接待您指出。
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-19 18:40:46 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
小妖女 该用户已被删除
板凳
发表于 2015-1-25 11:32:06 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
若天明 该用户已被删除
地板
发表于 2015-2-2 21:55:53 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
莫相离 该用户已被删除
5#
发表于 2015-2-8 08:06:43 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-25 02:12:47 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
若相依 该用户已被删除
7#
发表于 2015-3-7 15:49:52 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
简单生活 该用户已被删除
8#
发表于 2015-3-15 09:13:36 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-7 06:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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