我有以下(简化的)场景。
有一个 WCF 服务 (MyService),它公开了一些实体 MyEntityDTO。在客户端,我创建了一个接口 IMyServiceClient,它被传递给我的客户端组件,因此它们可以从任何底层实现请求 MyEntityDTO。而且现在我可以使用一些 MockedMyServiceClient 运行客户端单元测试:IMyServiceClient。目前看来还不错。
现在我创建了一个实际的 MyRealWCFServiceClient :IMyServiceClient,它基本上只是包装了由 Visual Studio 创建的 WCF 服务引用。
一个问题是 WCF 服务引用返回完全另一种 MyEntityDTO,因此我必须将它从服务引用实体类型映射到从 IMyServiceClient 返回的 MyEntityDTO 类型。我可以为此使用 AutoMapper。
但最大的问题来了。假设,我想在我的项目的其他一些应用程序中重用我的 MyRealWCFServiceClient。如果这些应用程序中的每一个都有自己的 WCF 服务引用和它自己的 DTO 类型,我将不得不以某种方式传递当前服务引用的所有 DTO 类型,并使用一些棘手的反射配置 AutoMapper 以将我的通用类型注入其中。真是一团糟...
但是我可以将我的常见 WCF 引用与他们在一些公共库中包装的 MyRealWCFServiceClients 一起收集,因此所有 MyRealWCFServiceClients 只使用那些已知的常见 WCF 引用。
我想知道,为服务引用创建一个公共库是一种好习惯吗?有没有更好的解决方案?