C# 如何从方法返回并使用IDictionary值

C# 如何从方法返回并使用IDictionary值,c#,idictionary,C#,Idictionary,我很难想出这个的正确语法。。我有这样一种方法: public IDictionary<string, object> FindTransactions() { Dictionary<string, object> returnItems = new Dictionary<string, object>(); //do stuff return returnItems; } 公共IDictionary FindTransaction

我很难想出这个的正确语法。。我有这样一种方法:

public IDictionary<string, object> FindTransactions()
{
    Dictionary<string, object> returnItems = new Dictionary<string, object>();

    //do stuff

    return returnItems;
}
公共IDictionary FindTransactions()
{
Dictionary returnItems=新字典();
//做事
归还物品;
}
我想把它的返回值分配给消费代码中的新变量。这些并不完全正确:

IDictionary returnItems = FindTransactions();
//Cannot implicitly convert type 'System.Collections.Generic.IDictionary<string, object>' to 'System.Collections.IDictionary'. An explicit conversion exists (are you missing a cast?)

Dictionary<string, object> returnItems2 = FindTransactions();
//Cannot implicitly convert type 'System.Collections.Generic.IDictionary<string, object>' to 'System.Collections.Generic.Dictionary<string, object>'. An explicit conversion exists (are you missing a cast?)
IDictionary returnItems=FindTransactions();
//无法将类型“System.Collections.Generic.IDictionary”隐式转换为“System.Collections.IDictionary”。存在显式转换(是否缺少强制转换?)
Dictionary returnItems2=FindTransactions();
//无法将类型“System.Collections.Generic.IDictionary”隐式转换为“System.Collections.Generic.Dictionary”。存在显式转换(是否缺少强制转换?)

…这是如何正确完成的?

您在这两种情况下都很接近:

IDictionary<string, object> returnItems2 = FindTransactions();
IDictionary returnItems2=FindTransactions();

泛型
IDictionary
接口不扩展非泛型
IDictionary
,因此您不能强制转换为非泛型,也不能隐式地从派生较少的类型(如接口)转换为派生较多的类型(如实现),因为不能保证实际类型是一个
字典

,所以在这两种情况下都很接近:

IDictionary<string, object> returnItems2 = FindTransactions();
IDictionary returnItems2=FindTransactions();
泛型
IDictionary
接口不扩展非泛型
IDictionary
,因此您不能转换为非泛型
IDictionary,也不能隐式地从派生程度较低的类型(如接口)转换为派生程度较高的类型(如实现),因为无法保证实际类型是
字典