我现在有一个类,在这个类中它有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.
}
}
答案 0 :(得分:1)
每个Db操作都将以CRUD操作结束。因此,您可以从数据库类中提取IDatabase,换句话说,从数据访问层中抽象出 :
public interface IDatabase<T>
{
T CreateItem();
T ReadItem(Id id);
bool UpdateItem(T item);
bool DeleteItem(T item)
}
使用依赖注入注入数据库列表,使用像Castle Windsor,Spring.NET等DI框架,通过Setter或Ctor注入Manager
类
希望这有意义.. :))
答案 1 :(得分:0)
如果我正确理解了您的问题,那么这听起来需要dependency injection,您需要提供Manager所依赖的对象来完成其工作。它们将是真实的对象(一个实际的数据库连接)或一个像它一样的虚假对象。
我能正确理解你的问题吗?