我在外部类中有以下方法
public static void DoStuffWithAnimals(IDictionary<string, Animal> animals)
在我的调用代码中,我已经有一个Dictionary<string, Lion>
对象,但我不能将其作为此方法的参数传入。所以 aIDictionary<,>
不是逆变的?我看不出这不应该起作用的任何理由。
我能想到的唯一解决方案是:
var animals = new Dictionary<string, Animal>();
foreach(var kvp in lions) {
animals.Add(kvp.Key, kvp.Value);
}
有没有办法将这个字典传递给这个方法,而不必创建一个相同对象的新字典?
编辑:
由于这是我的方法,我知道我在字典中使用的唯一成员是 的 getter TValue this[TKey key]
,它是 的成员IDictionary<TKey, TValue>
,因此在这种情况下,我无法为参数使用“更广泛”的类型。