仓酷云

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

[学习教程] ASP.NET网页设计组件编程之TypeConverterAttribute

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

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

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

x
说句实话,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();
  }

  [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
  [TypeConverter(typeof(SizeConverter))]//――注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[0];//失掉字符串的分开符
   string[]ss=((string)value).Split(spliter);

   Int32ConverterintConverter=newInt32Converter();//失掉范例转换器,.net中为我们界说了一些罕见的范例转换器。
   returnnewSize((Int32)intConverter.ConvertFromString(context,culture,ss[0]),
(Int32)intConverter.ConvertFromString(context,culture,ss[1]));
  }

  /**////<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[0];//失掉字符串的分开符

    returnstring.Join(spliter.ToString(),newstring[]{
    intConverter.ConvertToString(context,culture,size.Length),
    intConverter.ConvertToString(context,culture,size.Width)});
   }
   returnstring.Empty;
  }

  //TypeConverter另有几个虚办法,请人人本人研讨。
 }

 //[TypeConverter(typeof(SizeConverter))]――注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实用案例教程》(清华大学出版社)。
山那边是海 该用户已被删除
沙发
发表于 2015-1-27 22:21:39 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
莫相离 该用户已被删除
板凳
发表于 2015-2-5 11:40:54 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
不帅 该用户已被删除
地板
发表于 2015-2-11 15:28:44 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
冷月葬花魂 该用户已被删除
5#
发表于 2015-3-2 15:14:27 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
若相依 该用户已被删除
6#
 楼主| 发表于 2015-3-11 04:15:30 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
飘灵儿 该用户已被删除
7#
发表于 2015-3-17 20:35:02 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
老尸 该用户已被删除
8#
发表于 2015-3-25 00:53:02 | 只看该作者
那么,ASP.Net有哪些改进呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-5 07:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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