ASP.NET网页设计组件编程之TypeConverterAttribute
说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。编程 明天的这篇文章,我次要是带来PropertyAttribute里的TypeConverterAttribute的解说,起首在这里讲讲TypeConverterAttribute的感化是甚么:当Component的某个Property被设置时,如Size="60,70",剖析器会经由过程范例转化器,把这个字符串主动转换为属性声明的范例。.net的框架中已声了然良多的范例转化器,上面的代码中有枚举到。有点相似于operator。同时在Asp.net服务器控件的编写中TypeConverterAttribute也将会十分有效,服务器控件的Property只能以string情势保留在aspx页面里,而在服务器控件的DesignTime和RunTime时必需要把string转换为响应的范例。
源代码以下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.ComponentModel;
usingSystem.Globalization;
namespaceClassLibrary1
{
publicclassClass1:Component
{
privateSize_size;
publicClass1()
{
_size=newSize();
}
//――注1,也能够把这句TypeConverterAttribute写在注2处。
publicSizeSize
{
get{return_size;}
set{_size=value;}
}
}
publicclassSizeConverter:TypeConverter//我们自界说的Converter必需承继于TypeConverter基类。
{
/**////<summary>
///是不是能用string转换到Size范例。
///</summary>
///<paramname="context">高低文。</param>
///<paramname="sourceType">转换源的Type。</param>
///<returns></returns>
publicoverrideboolCanConvertFrom(ITypeDescriptorContextcontext,TypesourceType)
{
if(sourceType==typeof(string))
{returntrue;}
else
{returnfalse;}
}
/**////<summary>
///从string转到Size范例。
///</summary>
///<paramname="context">供应Component的高低文,如Component.Instance工具等。</param>
///<paramname="culture">供应地区信息,如言语、工夫格局、泉币格局等</param>
///<paramname="value"></param>
///<returns></returns>
publicoverrideobjectConvertFrom(ITypeDescriptorContextcontext,System.Globalization.CultureInfoculture,objectvalue)
{
if(value==null||value.ToString().Length==0)returnnewSize();
charspliter=culture.TextInfo.ListSeparator;//失掉字符串的分开符
string[]ss=((string)value).Split(spliter);
Int32ConverterintConverter=newInt32Converter();//失掉范例转换器,.net中为我们界说了一些罕见的范例转换器。
returnnewSize((Int32)intConverter.ConvertFromString(context,culture,ss),
(Int32)intConverter.ConvertFromString(context,culture,ss));
}
/**////<summary>
///是不是能用Size转换到string范例。
///</summary>
///<paramname="context"></param>
///<paramname="destinationType">转换方针的范例。</param>
///<returns></returns>
publicoverrideboolCanConvertTo(ITypeDescriptorContextcontext,TypedestinationType)
{
if(destinationType==typeof(Size))//假如是Size格局,则同意转成string。
{returntrue;}
else
{returnfalse;}
}
//在Property窗口中显现为string范例。
publicoverrideobjectConvertTo(ITypeDescriptorContextcontext,System.Globalization.CultureInfoculture,objectvalue,TypedestinationType)
{
if(value==null)returnstring.Empty;
if(destinationType==typeof(string))
{
Sizesize=(Size)value;
TypeConverterintConverter=TypeDescriptor.GetConverter(typeof(Int32));//能到范例转换器的另外一种体例。
charspliter=culture.TextInfo.ListSeparator;//失掉字符串的分开符
returnstring.Join(spliter.ToString(),newstring[]{
intConverter.ConvertToString(context,culture,size.Length),
intConverter.ConvertToString(context,culture,size.Width)});
}
returnstring.Empty;
}
//TypeConverter另有几个虚办法,请人人本人研讨。
}
//――注2
publicclassSize
{
privateInt32_length;
privateInt32_width;
publicSize(Int32length,Int32width)
{
_length=length;
_width=width;
}
publicSize():this(0,0)
{}
publicInt32Length
{
get{return_length;}
set{_length=value;}
}
publicInt32Width
{
get{return_width;}
set{_width=value;}
}
}
}
学习asp.net两个月有余了,除了对html、web控件比较熟悉(应该是说都能理解和接受)之外,竟不知道自己还会什么。看了两本书:《精通asp.net网络编程》(人民邮电出版社)、《asp.net实用案例教程》(清华大学出版社)。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 那么,ASP.Net有哪些改进呢?
页:
[1]