0
私はクラスオブジェクトを入力パラメータとして受け取り、それをWCFサービスオペレーション契約に投稿するWeb APIを持っています。 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);
}
上記のアプローチは、私にとっては大丈夫です、しかし、オブジェクトの任意の型を取り、WCFサービスと私がやったマッピング(もし要求1に渡しのみ1 API、プロセスを持っているし、返送することを計画リクエスト2のプロセスとセンドバックなど)が1つのAPI呼び出しで動作するはずです。これを達成するためにどんな助力も非常に高く評価されます。
あなたのPrintメソッドに生のJSONを取得し、その後Request1' 'にし、それは' Request2'に失敗した場合、最初にそれを逆シリアル化しようとすることができ。 – Michael
@Michael:それはいいようですが、UIは3つまたは4つのオブジェクトからなるオブジェクトを私に送ります。私は何とか私はWCFでそれを処理する要求の種類を理解する必要があるか分からない。どのようなイラストのイラストが私を助けるでしょう。ありがとう! –
あなたはMediatrを見ましたか? https://github.com/jbogard/MediatR –