0
我有一個Web API,它將一個類對象作爲輸入參數並將其發佈到WCF服務操作合同。 WCF服務是這樣設計的,它可以接受任何類型的請求,並且對請求的類型和需要執行的代碼進行內部映射。這個邏輯如下。發佈任何類型的請求對象作爲Web API的參數
public class PdfPrinterService : IPdfPrinter
{
public PdfPrinterResponse Print(PdfPrinterRequestBase request)
{
if (request is Request1)
{
//Process user report request and send back the response
}
if (request is Request2)
{
//Process request 2 and send back the response
}
return PdfPrinterFacade.PrintPdf();
}
}
//IPdfPrinter
public interface IPdfPrinter
{
[OperationContract]
PdfPrinterResponse Print(PdfPrinterRequestBase request);
}
//PdfPrinterRequestBase
[DataContract]
[KnownType(typeof(Request1))]
[KnownType(typeof(Request2))]
public class PdfPrinterRequestBase : IRequest
{
[DataMember]
public RequestHeader ReqHdr { get; set; }
}
//Web API Request1
public PdfPrinterResponse Print(Request1 _request1)
{
PdfPrinterService.PdfPrinterClient
_Client = new PdfPrinterService.PdfPrinterClient();
return _Client.Print(_request1);
}
//Web API Request2
public PdfPrinterResponse Print(Request2 _request2)
{
PdfPrinterService.PdfPrinterClient _Client =
new PdfPrinterService.PdfPrinterClient();
return _Client.Print(_request2);
}
上述方法是好的,對我來說,但計劃只有1個API,它可以將任何類型的對象,並把它傳遞給WCF服務,我做(如果請求1,處理和發送回映射響應否則如果請求2進程和回傳等)應該與1個API調用一起工作。任何幫助,非常感謝實現這一點。
你可以得到的原始JSON到您的打印方式,然後嘗試先'Request1'反序列化,如果失敗,以'Request2'。 – Michael
@Michael:聽起來不錯,但用戶界面會向我發送一個包含3或4個對象的對象。我不知道我需要了解在WCF中處理它的請求的類型。任何示例插圖都會幫助我。謝謝 ! –
你見過Mediatr嗎? https://github.com/jbogard/MediatR –