如何使用继承IDictionary的接口并将反序列化对象返回类型设置为该接口的接口

时间:2019-03-15 15:13:23

标签: c# interface json-deserialization idictionary

这里我有一个继承IDictionary的接口,我想要的是获取该接口的返回类型

  1. 接口类

using System.Collections.Generic;

public interface IClientSettings : IDictionary<string, string>
{

}
  1. 将jsondata反序列化以列出字典的方法的代码部分

if (result.StatusCode == HttpStatusCode.OK)
{
    DashboardJsonConverter jsonConverter = new DashboardJsonConverter();
    var keyValues = jsonConverter.DeserializeClientSettings(jsonData); //desrialize obj
    result.Dispose();//dispose response
    return (IClientSettings)keyValues;
}
  1. 反序列化方法

public List<Dictionary<string, string>> DeserializeClientSettings(string json)
{
    return JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(json);
}

1 个答案:

答案 0 :(得分:0)

C#类型系统无法安全地将一种类型转换为另一种类型。

List<Dictionary<string, string>>不了解IClientSettings,因此您无法将该类型转换为它。您将需要创建确实实现该接口的具体类型,并创建一种从List<Dictionary<string, string>>创建该类型的方法。您可以做的是创建一个“适配器”类型,该类型可以包装List<Dictionary<string, string>>并通过任何方法调用传递给基础类型。