ASP.NET教程之.NET2.0泛型的“近间隔”理论
可怜的程序员,还是逃不出移植的命运! 早闻.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泛型的伴侣供应一点参考,不敷的地方,接待您指出。它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
页:
[1]