whileループでオブジェクトを処理するキューがあります。彼らはこのように...どこかで非同期に追加されます。動的C#オブジェクトのデザインパターン
myqueue.pushback(String value);
そして、彼らはこのように処理されます。
while(true)
{
String path = queue.pop();
if(process(path))
{
Console.WriteLine("Good!");
}
else
{
queue.pushback(path);
}
}
今、事は私がTTL-などをサポートするために、これを変更したいということです(time to live)フラグを立てるので、ファイルパスはn回以上追加されます。
bool process(String path)
ファンクションシグニチャを維持しながら、どうすればいいですか?私はそれを変更したくありません。
マップを保持することを考えたり、プロセス関数がパスに対してfalseを返した回数を数えるリストを考えて、n回目のfalseの戻り時にリストからパスを削除しました。どのようにこれをより動的に行うことができるのだろうかと思っています。そして、TTLがプロセスに新たに追加されるたびに自動的に減少することをお勧めします。私はゴミを話していないことを願っています。 は、多分あなたは抽象/「ジョブマネージャ」の機能をカプセル化でき、この
class JobData
{
public string path;
public short ttl;
public static implicit operator String(JobData jobData) {jobData.ttl--; return jobData.path;}
}
あなたの 'JobData'アプローチには何が間違っていると思いますか? –
さて、私は、プロセス関数を変更したくありません。C#のStringへの暗黙的な変換を行うことができる 'JobData'オブジェクトと、動的に暗黙的にtll値を減らしたいのです。 – AlexandruC
私が言及するが、保証しない解決策は、あなたのTTLカウンタでString型に拡張メソッドを追加することです。理想的ではありません。なぜなら、どこにでも文字列に意味のない方法(非常にローカルな名前空間に限られています)を追加するからです。しかし、それはあなたの特定の問題を解決するでしょう。 –