需要很好的实现来使用具有相同输出格式但不同属性的多个API

kin*_*ave 1 c# architecture api rest

我正在使用多个RESTFul API,它们返回以下结构中的数据:

{
"total": 4,
"offset": 0,
"limit": 50,
**"data"**: [
          {
            "record_date": "2015-06-19 14:20:08",
            "user_id": "kdave@abc.com",
            "notes": "testing",
            "id": 25,
            "type": 1002
          },....
        ]
}
Run Code Online (Sandbox Code Playgroud)

" data "属性随不同的API而变化.目前,我需要在不同的命名空间下创建不同的类"Data"以反序列化API输出.

有什么建议以更好的方式处理这种情况吗?

pmc*_*ing 5

这是泛型的一个完美问题:

public class RestResponse<TData>
{
    public int Total { get; set; }
    public int Offset { get; set; }
    public int Limit { get; set; }
    public TData[] Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后只需定义各种数据类.

编辑:

如果您想使用相同的反序列化代码,请考虑使用通用方法:

public RestResponse<T> DeserializeResponse<T>(...)
{
     var result = new RestResponse<T>();
     ...
     return result;
}
Run Code Online (Sandbox Code Playgroud)

其他地方:

object result;
switch (...)
{
    case A:
        result = DeserializeResponse<ApiDataModelA>(...);
        break;
    ...
    default:
        throw new InvalidOperationException(...);
}
Run Code Online (Sandbox Code Playgroud)