사전에서 읽으려면 ConcurrentDictionary
이 필요하지 않습니다. 사실, 나는 Dictionary
을 전혀 공개하지 않는 것이 좋습니다. 오히려 필요한 최소한의 메소드를 공개합니다. 당신이 원한다면 키로 무엇인가를 볼 수있는 능력이 있다면, 그 방법을 제공하십시오.
다음은 당신이 요구하는 것을 수행 할 매우 간단한 싱글 톤입니다.
public sealed class ImageCache
{
private static readonly Dictionary<string, Bitmap> Images;
static ImageCache()
{
Images = new Dictionary<string, Bitmap>();
// load XML file here and add images to dictionary
// You'll want to get the name of the file from an application setting.
}
public static bool TryGetImage(string key, out Bitmap bmp)
{
return Images.TryGetValue(key, out bmp);
}
}
아마도 싱글 톤 패턴을 연구하고 대안을 조사해야 할 것입니다. 위의 조치가 해당 업무를 수행하는 반면 최상의 방법은 아닙니다. 예를 들어 눈에 띄는 문제 중 하나는 XML 파일의 위치에 대한 외부 지식이 필요하기 때문에 테스트 프레임 워크에 맞추는 것이 다소 어렵습니다. 더 나은 대안이 있지만 이것은 시작해야합니다.
그래서 싱글 톤 (anti) 패턴을 구현해야합니까 ?? 그것은 인터넷 (게으른, 자물쇠, 이중 자물쇠 ....)에서 죽음에 맞을 주제입니다. 아무리해도 구현을 선택하면 읽기 전용 사전을 반환해야합니다. – Vivek
왜 읽기 전용 사전이 필요합니까? 나는 그것에 덧붙여 야한다. – zetar
다른 스레드에서 수정하려고합니까? 'Dictionary'클래스는 스레드로부터 안전하지 않으므로 모든 액세스를 잠금으로 랩핑하거나 ['ConcurrentDictionary '] (http://msdn.microsoft.com/en-us/)를 사용해야합니다. library/dd287191.aspx)를 사용하십시오. –