我有一个简单的客户端,它通过泛型类型将数据发送到 Web api 服务器
服务器和客户端都存在以下结构
public interface IRequest<T>
{
string ApiKey { get; set; }
T RequestObject { get; set; }
}
public class UserRequest : IRequest<UserDetail>
{
public string ApiKey { get; set; }
public UserDetail RequestObject { get; set; }
}
我使用以下语法向服务器发送请求
var client = new RestClient(WebConfigurationManager.AppSettings["apiUri"]);
var profileRequest = new UserRequest
{
ApiKey = "xxxxx",
RequestObject = new UserDetail {Password = txtPassword.Text, UserName = txtUserName.Text}
};
var request = new RestRequest("UserRequest/PostUserDetail", Method.POST);
request.AddObject(profileRequest);
现在有趣的是,在服务器端,UserDetail 对象没有正确反序列化,它只包含 NULL,但 ApiKey 属性设置正确
public UserDetail PostUserDetail(UserRequest userRequest)
{
return new UserDetail { Password = userRequest.RequestObject.Password, UserName = userRequest.RequestObject.UserName };
}
从上面,设置了 userRequest.ApiKey,但是,在服务器 API 上 userRequest.RequestObject 始终为 NULL
不支持泛型类型吗?如果没有,是否有人对我如何修改服务器端的反序列化器有任何指示?我已经检查过该对象是否在客户端正确构造,并且是正确的。
非常感谢