次の静的クラスがあります。ルールはカスタム タイプです。このアプローチが、変数listToUpdateに対してスレッド セーフであることを確認してください。この変数は、静的関数を生成する各ルールに渡しています。
public static class RulesBO
{
public static List<Rule> GetRulesForTransaction(int transID)
{
List<Rule> toReturn = new List<Rule>();
GetRulesForSetA(transID,toReturn);
GetRulesForSetB(transID,toReturn);
}
public static void GetRulesForSetA(int transID, List<Rule> listToUpdate)
{
/*business logic and finally add/remove elements from listToUpdate*/
}
public static void GetRulesForSetB(int transID, List<Rule> listToUpdate)
{
/*business logic and finally add/remove elements from listToUpdate*/
}
}
ご協力ありがとうございました
編集: クラス RulesBO は ASP.NET から呼び出されます。したがって、セッションごとに、ユーザーのトランザクション ID に対して、GetRulesForTransaction メソッドが呼び出され、ルールのリストが返されます。
各 GetRulesForSetXYZ は、特定の transID に対して DB 呼び出しを行い、値を取得し、<> 100、> 1000 などのチェックを実行してから、新しい RULE インスタンスを変数に追加します。これらの他のメソッドはプライベートになり、最初のメソッドのみがパブリックになります。