海妖 发表于 2015-1-16 22:36:47

ASP.NET网站制作之.NET 2.0 泛型在实践开辟中的一次小使用...

说句实话,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

publicclassMailSetting
{
privatestring_name;

publicstringName
{
get{return_name;}
set{_name=value;}
}
privatestring_smtpServer;

publicstringSmtpServer
{
get{return_smtpServer;}
set{_smtpServer=value;}
}
privatestring_mailFrom;

publicstringMailFrom
{
get{return_mailFrom;}
set{_mailFrom=value;}
}
privatestring_username;

publicstringUserName
{
get{return_username;}
set{_username=value;}
}
privatestring_password;

publicstringPassword
{
get{return_password;}
set{_password=value;}
}
publicstringKey
{
get{returnthis.Name;}
}

}
  假如不利用泛型,我们能够经由过程数组大概汇合类来完成。
  关于数组,我们必要在BlogConfigurationSettings举行如许的界说:
privateMailSetting[]__mailSettings;

publicMailSetting[]MailSettings
{
get{returnthis._mailSettings;}
set{this._mailSettings=value;}
}
  我们还必要写一个办法往列举数组元素,依据关头字前往响应的MailSetting。
  关于汇合类,必要在BlogConfigurationSettings举行如许的界说:
privateMailSettingColletion_mailSettings;

publicMailSettingColletionMailSettings
{
get{returnthis._mailSettings;}
set{this._mailSettings=value;}
}
  我们必要写一个MailSettingColletion类,而且在MailSettingColletion中完成一个办法往依据关头字查找响应的MailSetting。
  关于泛型,我们只需在BlogConfigurationSettings举行以下的界说:
privateList<MailSetting>_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)。

莫相离 发表于 2015-2-8 08:06:43

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

金色的骷髅 发表于 2015-2-25 02:12:47

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

若相依 发表于 2015-3-7 15:49:52

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

简单生活 发表于 2015-3-15 09:13:36

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
页: [1]
查看完整版本: ASP.NET网站制作之.NET 2.0 泛型在实践开辟中的一次小使用...