0

我现在有一个类,在这个类中它有 15 个左右的私有方法,这些方法在计时器运行的循环中执行某些任务。其中一些方法调用数据库,而另一些则不调用。

问题是......我该如何安排这些以便我可以设置课程以便我可以伪造一个回购或执行过程?

这是我现在拥有的简化版本。

public class Manager : IManager
{
    System.Timers.Timer tm;
    private bool runningAsService;
    private List<Database> Databases = new List<Database>();
    private LogClass Log;

    public Manager(bool RunningAsService, LogClass log)
    {
        runningAsService = RunningAsService;
        Log = log;

        tm = new System.Timers.Timer(Settings.idle_time * 1000);
        tm.Elapsed += new System.Timers.ElapsedEventHandler(delegate { PerformDuties(); });
    }

    public void Start()
    {
        tm.Start();
        PerformDuties();
    }

    private PerformDuties()
    {
        //Call the other 10-15 private methods to perform all the tasks needed.
    }
}
4

2 回答 2

1

每个 Db 操作都会以任何一个 CRUD 操作结束。因此,您可以从 Database 类中提取 IDatabase,换句话说,将您的数据访问层抽象为如下所示:

public interface IDatabase<T> 
{
     T CreateItem();
     T ReadItem(Id id);
     bool UpdateItem(T item);
     bool DeleteItem(T item)
}

并使用依赖注入使用 DI 框架(如Castle WindsorSpring.NET等)通过 Setter 或 Ctor 向您的Manager类注入数据库列表

希望这是有道理的.. :)

于 2009-05-22T05:10:32.133 回答
0

如果我正确理解您的问题,那么这听起来需要依赖注入,您可以在其中提供对象管理器依赖于完成其工作。它们可能是真实的对象(一个实际的数据库连接),也可能是一个假的,就像它一样。

我是否正确理解您的问题?

于 2009-05-22T04:51:06.183 回答