2010-12-15 3 views
0

Dictionary<string, string>プロパティを外部コードによって変更/設定しないでください。これを達成するために、私はprivate変数を宣言でき、それはアクセサを取得するだけです。外部コードが辞書の内容を操作できないようにするにはどうすればよいですか?

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メソッドが呼び出されるたびに辞書をコピーします。大きな辞書の場合は時間がかかることがあります。

関連する問題