我想在 C# (.Net 4.0) 中创建一个 winform 应用程序,它使用文件对话框获取 xml 配置文件名。我是设计模式的新手,想在这个小应用程序中使用它。我已经阅读了很多关于各种设计模式的示例,但不知道该使用什么。这是此应用程序的说明。
此应用程序将运行各种作业。XML 配置文件可能包含多个作业。每个作业包含多个任务。任务可以是 1) 运行 SQL 查询 2) 搜索文本文件等,我计划在未来添加更多任务,例如检查文件是否存在。每个任务都有共同的属性,如名称、描述、启用。每个任务还具有特定于其自身的设置。例如,“运行 SQL 查询”任务包含 XML 中的连接字符串、查询和查询参数,而“搜索文本文件”任务包含文件列表和要搜索的文本。所以我生成的 XML 配置文件看起来像这样
<root>
<jobs>
<job>
<name>My first job</name>
<description>my first job log description</description>
<tasks>
<task>
<name>Get employee</name>
<description>gets a list of all employees</description>
<type>SQLTask</type>
<enabled>true</enabled>
<settings>
<connectionstring>myconnectionstring</connectionstring>
<query>GetAllEmployees</query>
<params>
<param name="Dept">HR</param>
<param name="EmpType">Permanent</param>
</params>
</settings>
</task>
<task>
<name>Search process log</name>
<description>searches process log for ERROR</description>
<type>FileSearchTask</type>
<enabled>true</enabled>
<settings>
<files>
<file>c:\process\*.log</file>
<file>c:\event\*.log</file>
</files>
<searchtoken>ERROR</searchtoken>
</settings>
</task>
</tasks>
</job>
<job>ANOTHER JOB ...
<job>
</jobs>
</root>
此应用程序还负责创建 XML 文件。所以我应该能够以某种方式将对象保存为 XML 文件格式。
我能想到的简单方法是创建一个名为 Task 的抽象类,构造函数以 XML 作为参数。使用 TaskFactory.GetInstance(XMLDocument) 创建一个具体对象。在 SQLTask 和 SearchTextFileTask(从 Task 对象派生的具体对象)的构造函数中,它反序列化包括设置的对象(每个任务类型将有自己的设置对象)。如果我想用例如数据库存储替换 XML,这种设计的问题将是什么。我不确定我的想法是否正确。如果有人可以提供包含所有必要类/接口的存根代码,我将不胜感激。