如何使用引用的类在WCF中指定DataContract

时间:2016-06-01 12:31:20

标签: c# asp.net wcf

我有一个示例服务类:

[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);
}
}

现在,我在这里遇到的问题是:类InstantIssuanceCardProfileCard是添加到WCF服务库的引用(它们存在于其他库中。我现在如何指定合同这两个类?

1 个答案:

答案 0 :(得分:2)

将您的服务合同与您无法直接控制的第三方图书馆分离出来可能是一个好主意。这将有助于保持界面固定,即使您更新库或完全交换它。

您可以使用Data Transfer Objects来定义服务合同。例如,定义一个新类CardDto,它只包含您希望在界面中公开的Card属性。此类必须可序列化以与WCF一起使用。

回复服务电话时,将您在服务中内部使用的Card实例映射到合同中定义的DTO类型。您可以使用AutoMapper来简化这些映射步骤。