【发布时间】:2015-01-23 11:38:33
【问题描述】:
这可能是一个奇怪的问题。 我有一个“代码”,我需要用它“包装”一些函数。 为了更简洁,我正在为字典构建一个包装类,并且我有一些“pre”和“post”操作要做,所有这些都在一个 try-catch-finally 块中,在中间,我想调用一个函数。
我实际上在做的是公开所有字典方法(以符合接口 IDictionary),并且我希望/需要全部实现它们,并且每个方法都应该“插入”到我的“一段代码”中。例如,这是我的ContainsKey(TKey key):
public bool ContainsKey(TKey key)
{
bool IsLockTaken = false;
try
{
// Acquire the lock:
Monitor.TryEnter(SyncRoot, MonitorEnterTimeout, ref IsLockTaken);
if (!IsLockTaken)
{
Log(@"Failed to Enter a monitor.");
return false;
}
/* INVOKE HERE */
return MyDict.ContainsKey(key);
}
catch (System.Exception ex)
{
Log(String.Format("Error: {0}", ex.ToString()));
return false;
}
finally
{
if (IsLockTaken)
{
Monitor.Exit(SyncRoot);
}
}
}
所以我真正需要的是每个函数,将调用放在“INVOKE HERE”部分。 有没有一种不错的、正确的方法来做到这一点,没有代码重复? 谢谢
【问题讨论】:
标签: c# oop dictionary delegates wrapper