我有一个WCF服务,其中一个方法将从多个Web API控制器中调用,如下面的代码所示。
public string Print(PdfPrinterRequest _request)
{
PdfPrinterService.PdfPrinterClient _Client = new PdfPrinterService.PdfPrinterClient();
PdfPrinterResponse _response = new PdfPrinterResponse();
return _Client.Print(_request.Document, out _pdfResponse);
}
PdfPrinterRequest(Document class)是我传递以从WCF服务获取响应消息的实体。目前,文档类包含很少的属性(REquest Header)。我想从其他API调用相同的Print方法并传递类型' Customer'到WCF服务。我怎样才能实现这一目标?任何人都可以建议我正确实施吗?
以下是我的WCF服务代码
public class PdfPrinterService : IPdfPrinter
{
public PdfPrinterResponse Print(PdfPrinterRequest request)
{
return PdfPrinterFacade.PrintPdf(request);
}
}
public static PdfPrinterResponse PrintPdf(PdfPrinterRequest request)
{
PdfPrinterResponse response = new PdfPrinterResponse();
//Process the request and send back the response message
}
[MessageContract]
public class PdfPrinterRequest
{
private Document _document;
[MessageBodyMember]
public Document Document
{
get { return _document; }
set { _document = value; }
}
}
如何将动态类对象作为参数传递代替PdfPrinterRequest,它不仅限于一种类型(Document)?请建议。
谢谢,
答案 0 :(得分:0)
如果此服务不需要可互操作,您可以切换到使用完整.NET类型信息的NetDataContractSerializer
,并且能够序列化更多类型(但不能任何类型 - 这是不可能的。)
从this answer抓取UseNetDataContractSerializerAttribute
并按照以下方式申请:
[UseNetDataContractSerializer]
public class PdfPrinterService : IPdfPrinter
{
public PdfPrinterResponse Print(PdfPrinterRequest request)
{
return PdfPrinterFacade.PrintPdf(request);
}
}
[MessageContract]
public class PdfPrinterRequest
{
[MessageBodyMember]
public object Document { get; set; }
}