我有一个示例服务类:
[ServiceContract]
public interface IViaCardService
{
[OperationContract]
InstantIssuanceCardProfile RetrieveInstantIssuanceCardProfileByID(Int64 Id);
[OperationContract]
Card RetrieveBlankCardForVisa(string dummyAccount);
[OperationContract]
Card RetrieveByPAN(string cardpan);
}
实现类:
public class ViaCardService : IViaCardService
{
public InstantIssuanceCardProfile RetrieveInstantIssuanceCardProfileByID(Int64 Id)
{
InstantIssuanceCardProfile cp = new InstantIssuanceCardProfileSystem().RetrieveByID(Id);
return cp;
}
public Card RetrieveBlankCardForVisa(string dummyAccount)
{
return new CardSystem().RetrieveBlankCardForVisa(dummyAccount);
}
public Card RetrieveByPAN(string cardpan)
{
return new CardSystem().RetrieveByPAN(cardpan);
}
}
现在,我遇到的问题是:类 InstantIssuanceCardProfile
和 Card
是添加到 WCF 服务库的引用(它们存在于其他一些库中。如何我现在要为这两个类指定契约(Contract)吗?
最佳答案
将您的服务契约(Contract)与您无法直接控制的第三方库分离可能是个好主意。这将有助于保持界面固定,即使您更新库或完全交换它也是如此。
您可以使用Data Transfer Objects来做到这一点定义您的服务契约(Contract)。例如,定义一个新类 CardDto
,它仅包含您想要在界面中公开的 Card
的属性。该类必须可序列化才能与 WCF 一起使用。
回复服务调用时,将您在服务中内部使用的 Card
实例映射到合约中定义的 DTO 类型。您可以使用AutoMapper简化这些映射步骤。
关于c# - 如何使用引用的类在 WCF 中指定 DataContract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568729/