Привет!
У меня есть класс, который используется как кеш:
public sealed class MyCache<T> : IDisposable
{
private ReaderWriterLockSlim theLock = new ReaderWriterLockSlim();
private Dictionary<int, T> theCache = new Dictionary<int, T>();
public void Add(int key, T value)
{
// ... logic/code to add to the dictionary
}
public void Clear()
{
theLock.EnterWriteLock();
try
{
theCache.Clear();
}
finally
{
theLock.ExitWriteLock();
}
}
}
Этот кеш используется много раз, поэтому часто бывает несколько раз его в любой момент времени.
Пример 1:
public static class SpecialPageCache
{
public static MyCache<string> SpecialPage = new MyCache<string>();
}
Пример 2:
public static class DdListCache
{
public static MyCache<List<int, string>> DdlList = new MyCache<List<int, string>>();
}
и т. Д.
У меня есть служба, которая может очищать кеши по требованию, но, к сожалению, каждый из них должен очищаться следующим образом:
private void ClearThemAll()
{
SpecialPageCache.SpecialPage.Clear();
DdListCache.DdlList.Clear();
// repeat for all other caches that may exist ...
}
Как я могу использовать отражение (или что-то еще?) Для вызова метода Clear () каждого кэша без необходимости явно делать это для каждого, как я делаю в вышеупомянутом методе ClearThemAll ()?