我有一个方法参数需要IDictionary<string,string>
,但我想传递一个IDictionary<string,JToken>
(Newtonsoft.Json)。
演员在运行时失败,但由于JToken
提供了隐式和显式转换方法,我认为可能有一种方法可以投射。
如何实现这种演员?
class MyClass
{
void Method(IDictionary<string,string> data) {}
}
...
IDictionary<string,JToken> record = ...;
MyClass cls = new MyClass();
cls.Method((IDictionary<string,string>)record);
...
答案 0 :(得分:5)
你不能Cast
从一个到另一个,几乎唯一的方法是创建一个新词典:
IDictionary<string,JToken> record = ...;
MyClass cls = new MyClass();
cls.Method(record.ToDictionary(k => k.Key,v => (string)v.Value));