【问题标题】:generic request class to send web request发送 Web 请求的通用请求类
【发布时间】:2018-03-26 11:11:58
【问题描述】:

我正在尝试将泛型列表添加为我的UserRequest 类中的类成员,如下所示

 public class UserRequest<T> where T : RealmObject
    {
        public String userName { get; set; }
        public String password { get; set; } 
        public String userId { get; set; }
        public int page { get; set; }
        public IList<T> requestList { get; set; }            

    }

现在,每当我想发送多个ContactCustomer 数据时,我都可以简单地使用以下请求

如有联系

UserRequest<Contact> userRequest = new UserRequest<Contact>();
userRequest.userId = "112";
userRequest.requestList = contactList;

这将导致以下请求数据

{

  "userId": "112",  
  "requsetList": [
    {

      "firstName": "john",
      "lastName": "j",
      "contactNumber": "(992) 414-9999",

    }
  ]
}

如果是customer,我将使用userRequest.requestList = customerList,这种方法可以帮助我避免为客户和联系人创建单独的条目 在 UserRequest 类中

但问题是当我只想创建简单的 UserRequest 时,我必须在 T 中传递一些东西。

例如,如果我想将它用于登录请求,以下代码将不起作用,那么有什么方法可以将UserRequest 用于通用请求和非通用请求

UserRequest userRequet = new UserRequest();
userRequest.userName ="abc";
userRequest.password="1234";

【问题讨论】:

  • 你不能为此实现一个 RealmObject 吗?

标签: c# xamarin realm


【解决方案1】:

UserRequestUserRequest&lt;T&gt; 是两种不同的类型 - 如果 UserRequest&lt;T&gt; 是您编写的唯一类,则无法创建 UserRequest

如您所见,UserRequest&lt;T&gt; 需要设置一个泛型类型。您可以只为登录创建一个UserRequest&lt;object&gt;,但这有点代码味道,并打破了RealmObject 约束。更好的是使泛型类型成为非泛型的子类:

public class UserRequest
{
    public String userName { get; set; }
    public String password { get; set; }
    public String userId { get; set; }
}

public class UserRequest<T> : UserRequest
    where T : RealmObject
{
    public int page { get; set; }
    public IList<T> requestList { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2018-04-20
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多