2012-05-03 12 views
4

辞書を受け取る方法に辞書を渡すにはどうしたらいいですか?Dictionary <string、string>を辞書<object、object>メソッドに渡すにはどうすればよいですか?

Dictionary<string,string> dic = new Dictionary<string,string>(); 

//Call 
MyMethod(dic); 

public void MyMethod(Dictionary<object, object> dObject){ 
    ......... 
} 
+0

正確な複製をhttp://stackoverflow.com/questions/4734280/how-to-pass-dictarystring-string-object-in-some-method – emd

+0

状況によって異なります。あなたのメソッドを一般的にすることはできますか?メソッドをインターフェースに置くことはできますか?あなたは異なる解決策を持っているかもしれません。あなたが提供した例はまさにあなたが必要とするものですか? –

答えて

8

あるとしてあなたはそれを渡すことはできませんが、あなたはコピーを渡すことができます:

var copy = dict.ToDictionary(p => (object)p.Key, p => (object)p.Value); 

あなたのAPIプログラムは、このようなインターフェースではなくクラスを取る作るために、多くの場合、良いアイデアです。

public void MyMethod(IDictionary<object, object> dObject) // <== Notice the "I" 

この小さな変更はあなたがそのようなあなたのAPIへSortedList<K,T>などの他の種類の辞書を渡すことができます。

1

あなたは、読み取り専用の目的のために辞書を渡したい場合は、LINQの使用できます。あなたの現在のaproachが原因タイプセーフな制約のために動作しません

MyMethod(dic.ToDictionary(x => (object)x.Key, x => (object)x.Value)); 

を:

public void MyMethod(Dictionary<object, object> dObject){ 
    dObject[1] = 2; // the problem is here, as the strings in your sample are expected 
} 
関連する問題