Я работаю над последовательным ответом веб-API. Я оберточной желаемый объект/субъект в ApiResponsDTO
отправленном с помощью метода API действий контроллераDeserialize Generic <T>
public IHttpActionResult Validate([FromBody] PortalLoginDTO logindDTO)
{
IHttpActionResult response = null;
ApiResponseDTO<AppUserDTO> responseData = null;
var user = _userservice.GetUserByName(logindDTO.Username);
responseData = new ApiResponseDTO<AppUserDTO>(user, 200);
response = new ApiResponseActionResult<ApiResponseDTO<AppUserDTO>>(responseData, 200);
return response;
}
Response Класс в API
public class ApiResponseDTO<T>
{
private T _value;
[DataMember]
public string Version { private set { } get { return "1.2.3"; ; } }
[DataMember]
public double StatusCode { get; set; }
[DataMember]
public List<string> ErrorMessages { get; set; }
[DataMember]
public T Result { private set { } get { return _value; } }
public ApiResponseDTO()
{
ErrorMessages = new List<string>();
}
public ApiResponseDTO(T value, double statusCode)
{
StatusCode = (int)statusCode;
_value = value;
ErrorMessages = new List<string>();
}
}
В результате поля выше класса я хочу послать еще запрашиваемый объект/класс
запрошенный класс
[DataContract]
public partial class AppUserDTO
{
public AppUserDTO()
{
}
[DataMember]
public int UserId { get; set; }
[DataMember]
public string Username { get; set; }
[DataMember]
public Nullable<int> TitleId { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string Surname { get; set; }
[DataMember]
public bool IsActive { get; set; }
[DataMember]
public string PasswordEncoded { get; set; }
}
На клиенте MVC приложения Я использую JavaScriptSerializer
var responsedatda = serializer.Deserialize<ApiResponseDTO<AppUserDTO>>(response.Content.ReadAsStringAsync().Result);
Я получаю ApiResponseDTO
но запрашиваемый класс не сериализации, как показано на рисунке Response in client side
, что является причиной того, что я не получаю вложенные UserDTO
в ответе API.