/// <summary>
/// Create an instance of the service response dto type and inject it with the supplied responseStatus
/// </summary>
/// <param name="request"></param>
/// <param name="responseStatus"></param>
/// <returns></returns>
public static object CreateResponseDto(object request, ResponseStatus responseStatus)
{
// Predict the Response message type name
var responseDtoType = WebRequestUtils.GetErrorResponseDtoType(request);
var responseDto = responseDtoType.CreateInstance();
if (responseDto == null)
{
return(null);
}
// For faster serialization of exceptions, services should implement IHasResponseStatus
var hasResponseStatus = responseDto as IHasResponseStatus;
if (hasResponseStatus != null)
{
hasResponseStatus.ResponseStatus = responseStatus;
}
else
{
var responseStatusProperty = responseDtoType.GetProperty(ResponseStatusPropertyName);
if (responseStatusProperty != null)
{
// Set the ResponseStatus
responseStatusProperty.SetProperty(responseDto, responseStatus);
}
}
// Return an Error DTO with the exception populated
return(responseDto);
}