技术开发 频道

自定义TypeConverter把基础类型转换为复杂类型


【IT168技术文档】

  TypeConverter对于编写ASP.NET Server Control的朋友可谓是再熟悉不过了。我们通过示例,一步一步地来查看如何在Atlas中使用自定义TypeConverter。

  首先,定义一个复杂类型Employee:
1 [TypeConverter(typeof(EmployeeConverter))] 2 public class Employee 3 { 4 public string Name; 5 6 public int Age; 7 }
  可以看到,我们使用了TypeConverterAttribute将稍后会讲解的EmployeeConverter关联到Employee上。

  接着,和上一个例子一样,我们写一个支持HTTP GET访问的Web Services方法,只是参数使用了复杂类型。
1 [WebService(Namespace = "http://tempuri.org/")] 2 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 3 public class HttpGetEmployeeService : System.Web.Services.WebService { 4 5 [WebMethod] 6 [WebOperation(true, ResponseFormatMode.Xml)] 7 public XmlDocument SubmitEmployee(Employee employee) 8 { 9 XmlDocument responseDoc = new XmlDocument(); 10 responseDoc.LoadXml( 11 "<?xml-stylesheet type=\"text/xsl\" href=\"Employee.xsl\"?>" + 12 "<Employee><Name></Name><Age></Age></Employee>"); 13 responseDoc.SelectSingleNode("//Name").InnerText = employee.Name; 14 responseDoc.SelectSingleNode("//Age").InnerText = employee.Age.ToString(); 15 return responseDoc; 16 } 17 }
  然后是所需的Xslt文件:
1 <?xml version="1.0" encoding="utf-8"?> 2 <xsl:stylesheet version="1.0" 3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 4 <xsl:template match="/Employee"> 5 <html> 6 <head> 7 <title>Thanks for your participation</title> 8 </head> 9 <body style="font-family:Verdana; font-size:13px;"> 10 <h4>Here's the employee you submitted:</h4> 11 <div> 12 <xsl:text>Name: </xsl:text> 13 <xsl:value-of select="Name" /> 14 </div> 15 <div> 16 <xsl:text>Age: </xsl:text> 17 <xsl:value-of select="Age" /> 18 </div> 19 </body> 20 </html> 21 </xsl:template> 22 </xsl:stylesheet>
0
相关文章