2010-12-15 6 views
0

Dictionary<string, string> 속성을 외부 코드로 변경하거나 설정하면 안됩니다. 이를 위해 개인 변수를 선언 할 수 있으며 접근 자만 사용하여 속성을 가져올 수 있습니다.외부 코드가 사전의 내용을 조작하지 못하게하려면 어떻게해야합니까?

private static Dictionary<string, string> myDic = new Dictionary <string, string>(); 
    Public static Dictionary<string, string> MyDictionary 
    { 
      get { return myDic;} 
    } 

그러나이 경우 외부 코드는 사전의 '내용'을 조작 할 수 있습니다. 예 : MYClass.MyDictionary["FirstSampleKey"] = "Replacing original value by New Value";

외부 코드가 사전의 내용을 조작하기를 원하지 않습니다. 이것을 어떻게 할 수 있습니까?

답변

1

ReadOnlyCollection이 있기 때문에 읽기 전용 사전이 없다고 생각합니다. 최선의 방법은 사전을 전혀 노출시키지 않고 개발자가 사전에 직접 액세스하지 못하게하여 정보에 접근 할 수있는 속성/메소드를 노출하는 것입니다.

이것이 많은 일을하는 경우, 다른 누군가의 ReadOnlyDictionary 구현을 사용하여 조사 할 수도 있고 (Google이 있으면 충분할 수 있습니다) 직접 작성할 수도 있습니다.

1

개발자가 단어를 찾는 방법을 쓸 수도 있고 그렇지 않으면 사전의 복사본을 반환 할 수 있다고 말하고 싶습니다. 사전은 지금처럼 작동하지만, get 메소드가 호출 될 때마다 사전을 복사하기 때문에 큰 사전 인 경우 다소 시간이 걸릴 수 있습니다.

관련 문제