具有泛型属性的C#类
我正在尝试将api响应映射到自定义api类。Api始终返回以下json字段:具有泛型属性的C#类,c#,json,generics,C#,Json,Generics,我正在尝试将api响应映射到自定义api类。Api始终返回以下json字段: Success (true/false) Paginator (object) Data (object) 好的,首先两个字段都没有问题,因为它们总是相同的。 但根据端点的不同,数据属于另一类(用户,组等) 对于所有这些端点,我有一个实体类,如user.cs等 如何将用户对象动态映射到上述apiresseclass 如果可能的话,我不想对每个端点进行apiresseclasses 抱歉格式化,我在移动电话上 使用泛
Success (true/false)
Paginator (object)
Data (object)
好的,首先两个字段都没有问题,因为它们总是相同的。
但根据端点的不同,数据属于另一类(用户
,组
等)
对于所有这些端点,我有一个实体类,如user.cs等
如何将用户对象动态映射到上述apiresseclass
如果可能的话,我不想对每个端点进行apiresseclasses
抱歉格式化,我在移动电话上 使用泛型创建一个类,并将
Data
属性设置为泛型参数
比如说
public class ApiResponse<TData> {
public bool Success { get; set; }
public object Paginator { get; set; }
public TData Data { get; set; }
}
public class ApiResponse: ApiResponse<object> {
}
公共类响应{
公共bool成功{get;set;}
公共对象分页器{get;set;}
公共TData数据{get;set;}
}
公共类ApiResponse:ApiResponse{
}
然后可以在服务器上这样的端点中使用
public ApiResponse<User> MyUserAction() { ... }
public ApiResponse<Group> MyGroupAction() { ... }
public ApiResponse MyUserAction(){…}
公共ApiResponse MyGroupAction(){…}
甚至在反序列化json时在客户端
ApiResponse<User> response = JsonConvert.DeserializeObject<ApiResponse<User>>(json);
ApiResponse response=JsonConvert.DeserializeObject(json);
公共类API响应
{
公共bool成功{get;set;}
公共对象分页器{get;set;}
公共T数据{get;set;}
}
公共类用户
{
公共字符串名称{get;set;}
//其他属性
}
然后根据您当前从Api读取的方式,您将使用
,这意味着ApiReponse中的T Date设置为用户类型
e、 g.如果您使用的是HttpClient类型
using (var client = new HttpClient())
{
var response = await client.GetAsync("http://yoururl.com")
var jsonString = await task.Content.ReadAsStringAsync();
var model = JsonConvert.DeserializeObject<ApiResponse<User>>(jsonString);
}
使用(var-client=new-HttpClient())
{
var response=wait client.GetAsync(“http://yoururl.com")
var jsonString=await task.Content.ReadAsStringAsync();
var model=JsonConvert.DeserializeObject(jsonString);
}
您可以使用泛型:
public class ApiResponse<T>
{
public bool IsSuccess { get; set; }
public object Paginator { get; set; }
public T Data { get; set; }
}
请尝试向我们提供一些代码。更具体地说,请尝试给出一个。您是否尝试过为所有这些对象创建基类?您正在使用哪个序列化程序?照目前的情况,这个问题要么太宽泛,要么不清楚。非常感谢。工作得很有魅力。仿制药对我来说是新的。
public class ApiResponse<T>
{
public bool IsSuccess { get; set; }
public object Paginator { get; set; }
public T Data { get; set; }
}
var response = new ApiResponse<User>