应用程序设计/架构

时间:2012-03-26 22:28:51

标签: architecture

我正在尝试针对以下情况进行设计,但无法理解它。

我在数据库表中有记录,表示应用程序需要执行的任务。每条记录都映射到特定的C#函数。因此,向表中添加行需要通过为其创建特定任务来重建应用程序。

到目前为止,我已经添加了一个基类,并且每次需要添加新功能时都会创建一个新类。

基类:
public abstract class TaskBase
{ public abstract void DoWork (); }

public sealed class Task001: TaskBase
{ public override void DoWork () { /* Record-specific code */ } }

public sealed class Task002: TaskBase
{ public override void DoWork () { /* Record-specific code */ } }

很难解释为什么需要这样做所以我不会去那里。虽然我确信在设计和实用性方面有更好的方法来实现这一点。有什么建议?我正在使用C#和.NET的反射功能真的有帮助。

1 个答案:

答案 0 :(得分:0)

您可以将基类作为通用DLL中的接口,然后为每个任务创建一个基于基接口的TASK DoWork实现的新DLL。

在您的数据库中,您可以为每一行添加TAKS DLL路径(或者只能添加程序集名称并将所有DLL安装在预定义的目录中)。然后使用.NET反射,您可以加载TASK程序集并根据您的基本接口动态调用“DoWork”方法。

最好在DB中使用代码,因为任务dll将被预编译并且更安全。此外,每次添加新任务时,您都不需要重建主应用程序。