如何将字典<字符串,字符串>传递给字典<对象,对象>方法

本文关键字:字符串 对象 字典 方法 | 更新日期: 2023-09-27 18:32:59

如何将字典传递给接收字典的方法?

Dictionary<string,string> dic = new Dictionary<string,string>();
//Call
MyMethod(dic);
public void MyMethod(Dictionary<object, object> dObject){
    .........
}

如何将字典<字符串,字符串>传递给字典<对象,对象>方法

您不能按原样传递它,但可以传递副本:

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

让您的 API 程序采用接口而不是类通常是一个好主意,如下所示:

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

通过此小更改,您可以将其他类型的字典(例如SortedList<K,T>)传递给 API。

如果要传递字典以实现只读目的,则可以使用 Linq:

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

由于类型安全限制,您当前的 aproach 不起作用:

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