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

标签 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 服务库的引用(它们存在于其他一些库中。如何我现在要为这两个类指定契约(Contract)吗?

最佳答案

将您的服务契约(Contract)与您无法直接控制的第三方库分离可能是个好主意。这将有助于保持界面固定,即使您更新库或完全交换它也是如此。

您可以使用Data Transfer Objects来做到这一点定义您的服务契约(Contract)。例如,定义一个新类 CardDto,它仅包含您想要在界面中公开的 Card 的属性。该类必须可序列化才能与 WCF 一起使用。

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

关于c# - 如何使用引用的类在 WCF 中指定 DataContract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568729/

相关文章:

c# - 如何检查变量是否是字符串

c# - 字符串和字符串有什么区别?

c# - 如何使用 MemoryStream 选择路径

c# - 如何在没有浏览器的情况下与网站互动?

c# - 保护 wcf 服务的模式和良好实践

c# - WCF 服务协定是否可以具有可为 null 的输入参数?

c# - 将 RestSharp 用于以下代码的内置替代方法是什么?

c# - 将枚举存储到数据库的平滑方法

c# - WebAPI OData 在不使用 $expand 选项的情况下包含相关实体

c# - WCF:MessageContract、DataContract……一头雾水?