嵌套类

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; }
}
}
}

这样的好处是增加了代码的可读性和可维护性,减少了类定义的文件。