我试图在C#中创建一个可用于返回任何类型数据的类。
public class ResponseObject
{
public <T> data { get;set }
public Boolean Success { get; set; }
public string Message { get; set; }
}
当我的应用程序向API发送请求时,该对象将作为响应对象的包装。
我已经尝试过对此进行研究,但找不到与我要执行的操作相关的任何教程。
这在C#中可能吗?响应对象将转换为JSON字符串,然后作为响应发送。
我不会对此对象进行任何处理,因为已经完成了。我只想将数据放入ResponseObject内并发送
我想做以下事情:
var customers = repository.GetCustomers();
var orders = repository.GetOrders();
if(customers)
{
success = true;
message = "";
}
else{
success = false;
message = "failed to get customers";
}
if(orders)
{
orderssuccess = true;
ordersmessage = "";
}
else{
orderssuccess = false;
ordersmessage = "failed to get orders";
}
ResponseObject customerResponse = new ResponseObject{
data = customers,
success = success,
message = message
};
ResponseObject orderResponse = new ResponseObject{
data = orders,
success = orderssuccess,
message = ordersmessage
};
答案 0 :(得分:8)
您需要将
public class ResponseObject<T>
{
public T data { get; set; }
public Boolean Success { get; set; }
public string Message { get; set; }
}
答案 1 :(得分:5)
您已经差不多完成了!只需将您的<T>
更改为T
。
public class ResponseObject<T> where T : class
{
public T data { get; set; }
public Boolean Success { get; set; }
public string Message { get; set; }
}
这里where T : class
确保泛型类型参数是引用类型。从您的问题看来,您似乎要在其中传递一个对象。
答案 2 :(得分:0)
您在这里有两个选择:
以下是这两种方法的示例:
// Make the class generic
public class ResponseObject<T> {
public T Data { get; set }
public Boolean Success { get; set; }
public string Message { get; set; }
}
// Use generic methods to access the property
public class ResponseObject {
private object data;
public T GetData<T>() {
return (T)data;
}
public void SetData<T>(T newData) {
data = newData;
}
public Boolean Success { get; set; }
public string Message { get; set; }
}
第二种方法不如第一种方法健壮-基本上,这是一种光荣的,不受限制的演员表。但是,第一种方法不允许您构建包含不同ResponseObject
的{{1}}的容器。您可以通过在T
顶部添加接口来解决此问题:
ResponseObject