Istnieje obejście
wymyśliłem następujące rozwiązanie:
- Tworzenie Metody Rozszerzenia
CreateResponse2
wywołujące oryginalny CreateResponse
metoda
- W kontrolerach, wywołać nową metodę niestandardową (
Request.CreateResponse2(...)
)
Poniżej jest moje rozwiązanie:
Utwórz nowy moduł HttpRequestMessageExtensions
Imports System.Net
Imports System.Net.Http
Imports System.Web
Imports System.Runtime.CompilerServices
Imports System.Web.Http
Public Module HttpRequestMessageExtensions
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value)
End Function
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, Configuration As HttpConfiguration) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value, Configuration)
End Function
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, mediaType As String) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value, mediaType)
End Function
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, formatter As Formatting.MediaTypeFormatter) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value, formatter)
End Function
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, mediaType As Headers.MediaTypeHeaderValue) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value, mediaType)
End Function
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, formatter As Formatting.MediaTypeFormatter, mediaType As String) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value, formatter, mediaType)
End Function
<Extension()> _
Public Function CreateResponse2(Of T)(ByVal request As HttpRequestMessage, statusCode As HttpStatusCode, value As T, formatter As Formatting.MediaTypeFormatter, mediaType As Headers.MediaTypeHeaderValue) As HttpResponseMessage
Return request.CreateResponse(Of T)(statusCode, value, formatter, mediaType)
End Function
End Module
wykorzystanie w kontrolerach:
Return Request.CreateResponse2(Of SomeClass)(HttpStatusCode.BadRequest, objSomeClass)
Zrzut ekranu:

Przypuszczam, że jest to spowodowane ustawieniami IDE, w których zaawansowane opcje są ukryte przed intellisense w VB (opcja taka jak "pokaż zaawansowanych członków"). – shahkalpesh
Nie wydaje się to być powiązane, ponieważ pole w opcjach dla mVS2012 to "Lista autorów", która jest wybrana, i Ukryj zaawansowane elementy, które są odznaczone. – Steve