NegotitatedContentResult<T>
언급했듯이 base에서 상속 하고 변환 할 필요가없는 경우 content
(예 : 문자열을 반환하려는 경우) ExecuteAsync
메서드 를 재정의 할 필요가 없습니다 .
여러분이해야 할 일은 적절한 타입 정의와 반환 할 HTTP 상태 코드를베이스에 알려주는 생성자를 제공하는 것뿐입니다. 다른 모든 것은 작동합니다.
다음은 NotFound
및 모두에 대한 예입니다 InternalServerError
.
public class NotFoundNegotiatedContentResult : NegotiatedContentResult<string>
{
public NotFoundNegotiatedContentResult(string content, ApiController controller)
: base(HttpStatusCode.NotFound, content, controller) { }
}
public class InternalServerErrorNegotiatedContentResult : NegotiatedContentResult<string>
{
public InternalServerErrorNegotiatedContentResult(string content, ApiController controller)
: base(HttpStatusCode.InternalServerError, content, controller) { }
}
그런 다음 다음에 대한 해당 확장 메서드를 만들 수 있습니다 ApiController
(또는 기본 클래스가있는 경우이를 수행).
public static NotFoundNegotiatedContentResult NotFound(this ApiController controller, string message)
{
return new NotFoundNegotiatedContentResult(message, controller);
}
public static InternalServerErrorNegotiatedContentResult InternalServerError(this ApiController controller, string message)
{
return new InternalServerErrorNegotiatedContentResult(message, controller);
}
그런 다음 기본 제공 방법처럼 작동합니다. 기존 NotFound()
을 호출하거나 새 사용자 정의를 호출 할 수 있습니다 NotFound(myErrorMessage)
.
그리고 물론, 사용자 정의 유형 정의에서 "하드 코딩 된"문자열 유형을 제거하고 원하는 경우 일반 상태로 둘 수 있지만 , 실제로 무엇인지에 따라 문제에 대해 걱정해야 할 수도 있습니다 .ExecuteAsync
<T>
당신은을 통해 볼 수 소스 코드 에 대한 NegotiatedContentResult<T>
이 수행 모두 볼 수 있습니다. 그다지 많지 않습니다.