C# WCF合同了解该领域

C# WCF合同了解该领域,c#,.net,wcf,C#,.net,Wcf,我有四个项目: 1.定义我的项目的业务登录名的业务项目。 2.定义合同接口和DTO的服务合同项目。 3.定义服务实现的服务实现项目。 4.具有使用该服务的svc文件的Web应用程序 理论上: A.合同项目不得涉及任何人。 B.服务实施应参考合同项目和领域。 C.web应用程序应仅引用合同和实施项目 我有这样的服务: AccoundData GetAccount(AccountTypeEnum type); 问题是在域中定义了AccountTypeEnum,因此契约和web应用程序应该引用域。。

我有四个项目:
1.定义我的项目的业务登录名的业务项目。
2.定义合同接口和DTO的服务合同项目。
3.定义服务实现的服务实现项目。
4.具有使用该服务的svc文件的Web应用程序

理论上:
A.合同项目不得涉及任何人。
B.服务实施应参考合同项目和领域。
C.web应用程序应仅引用合同和实施项目

我有这样的服务:

AccoundData GetAccount(AccountTypeEnum type);

问题是在域中定义了
AccountTypeEnum
,因此契约和web应用程序应该引用域。。但这正是我们试图阻止的。。那么,我如何防止“知道”域的契约呢?

在这种情况下,契约必须使用不同的enum/DTO,并且服务实现必须在契约enum和域enum之间进行转换。

WCF契约具有对域对象进行操作的方法-它怎么可能不知道域@marc_s:合同只是一个接口,不是实现。域的结果存储在数据传输对象上。因此,合同为什么要知道该领域?如果它知道的话,你就强迫我们的项目也知道这个域。难道没有其他解决方案可以为服务之间的每种类型创建DTO吗?。。它不考虑代码复制吗?每当我更改枚举时,我都必须将枚举的DTO更改为。如果您想要如此严格的分隔,您必须在应用程序上付出额外的努力。我不知道自动创建DTO的工具-DTO应该是针对操作需要的,所以您必须始终自己创建。对于枚举,您可能可以为其创建T4模板,但这将比手动创建更复杂。如果您不想付出额外的努力,请将合同项目与服务实施项目合并。我如何为Enum DTO创建创建T4模板?我试图在google上搜索,但没有关于T4和枚举的信息。您必须从头开始创建模板-它必须经过程序集,找到该程序集中定义的所有枚举,并为它们创建DTO或其他枚举。