C# 用于发送web请求的通用请求类

C# 用于发送web请求的通用请求类,c#,xamarin,realm,C#,Xamarin,Realm,我试图在我的UserRequest类中添加泛化列表作为类成员,如下所示 public class UserRequest<T> where T : RealmObject { public String userName { get; set; } public String password { get; set; } public String userId { get; set; } public in

我试图在我的
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; }            

    }
这将导致以下请求数据

{

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

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

    }
  ]
}
如果是
customer
,我将使用
userRequest.requestList=customerList
,这种方法有助于我避免为客户和联系人删除saperate实体 在UserRequest类中

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

例如,如果我想将其用于登录请求,下面的代码将不起作用,那么是否有任何方法可以将
UserRequest
用于一般请求和非一般请求

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

UserRequest
UserRequest
是两种不同的类型-如果
UserRequest
是您编写的唯一类,则无法创建
UserRequest

正如您所发现的,
UserRequest
需要设置泛型类型。您可以为登录创建一个
UserRequest
,但这有点代码味道,打破了
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; }
}
公共类用户请求
{
公共字符串用户名{get;set;}
公共字符串密码{get;set;}
公共字符串用户标识{get;set;}
}
公共类UserRequest:UserRequest
其中T:RealmObject
{
公共整型页{get;set;}
公共IList请求列表{get;set;}
}

您不能为此实现一个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; }
}