C#允许嵌套类,也就是在类中定义类,以前一直没有用过,这两天写一个XML的解析程序,发现了这种技术的使用场景,这里顺便总结一下。
在解析SCXML时,针对SCXML中的元素创建为C#的类,这样在解析时,将xml文档转换为对象集合,在操作时,只要操作对象就可以了。举个例子,比如datamodel元素,结构是这样的:
1 2 3 4 5 6 7
| <datamodel> <data id="ccxmlid" expr="32459"/> <data id="v3id" expr="17620"/> <data id="dest" expr="'tel:+18315552020'"/> <data id="src" expr="'helloworld2.vxml'"/> <data id="id" expr="'HelloWorld'"/> </datamodel>
|
我们创建对应的C#类,表示这种结构。我们创建类DataModelConfigure对应元素,创建类DataConfigure对应元素,由于元素总是出现在元素中,所以,我们可以在DataModelConfigure中定义DataConfigure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| using System.Collections.Generic;
namespace ZL.FSM.Core.Models { public class DataModelConfigure { public List<DataConfigure> DataList { get; set; }
public DataModelConfigure() { DataList = new List<DataConfigure>(); } public class DataConfigure { public string Src { get; set; }
public string Expr { get; set; }
public string Content { get; set; } } } }
|
这样的好处是增加了代码的可读性和可维护性,减少了类定义的文件。