我有一个处理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类型添加扩展方法。不理想或不推荐,因为它增加了一个无意义的方法来处理字符串(甚至局限于本地命名空间),但它会解决您的具体问题。 –