我有一個處理while循環中的對象的隊列。他們是異步的地方加入..這樣的:動態C#對象的設計模式
myqueue.pushback(String value);
而且他們都是這樣處理的:
while(true)
{
String path = queue.pop();
if(process(path))
{
Console.WriteLine("Good!");
}
else
{
queue.pushback(path);
}
}
現在,事情是,我想修改該支持TTL樣(生存時間)標誌,所以文件路徑將被添加超過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'方法有什麼錯誤? –
好的事情是我不想修改過程函數,我只想'JobData'對象能夠在c#中對String進行隱式轉換,並且有一些想法可以動態地並且隱含地減少tll值 – AlexandruC
可能的附加我會提到但不認可的解決方案是使用TTL計數器向String類型添加擴展方法。不理想或不推薦,因爲它增加了一個無意義的方法來處理字符串(甚至侷限於本地命名空間),但它會解決您的具體問題。 –