通用请求类发送Web请求

时间:2018-03-26 11:11:59

标签: c# xamarin realm

我正在尝试在我的UserRequest类中添加generize list作为类成员,如下所示

 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";

1 个答案:

答案 0 :(得分:1)

UserRequestUserRequest<T>是两种不同的类型 - 如果UserRequest是您编写的唯一课程,则无法创建UserRequest<T>

如您所见,UserRequest<T> 要求设置通用类型。您可以为登录创建UserRequest<object>,但这有点代码味道并且会破坏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; }
}
相关问题