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 操作のいずれかで終了します。したがって、データベース クラスから IDatabase を抽出できます。つまり、データ アクセス レイヤーを次のように抽象化できます

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

そして、 Castle WindsorSpring.NETなどの DI フレームワークを使用して依存性注入を使用してデータベースのリストを注入します。Managerクラスへの Setter または Ctor インジェクションによって

これが理にかなっていることを願っています.. :)

于 2009-05-22T05:10:32.133 に答える
0

私があなたの質問を正しく理解していれば、これは、マネージャーが作業を行うために依存するオブジェクトを提供する依存性注入の必要性のように思えます。それらは、実際のオブジェクト (実際のデータベース接続) またはそのように振る舞う偽物になります。

あなたの質問を正しく理解していますか?

于 2009-05-22T04:51:06.183 に答える