我在我的应用程序中有多个服务。我有一个数据提取,我需要在多个服务中使用。
例如:我的两项服务myCommonClass
和service1
service2
为此,在服务级别,我有一个MyApplication.Common
库,此库包含myCommonClass
。由于我的服务都引用了MyApplication.Common
,因此他们都可以使用它。
我的客户端应用程序包含对service1
和service2
的服务引用。
对于我的客户端应用程序,与service1.myCommonClass
相比,service2.myCommonClass
是一个单独的命名空间,其中<strong>是我的问题
在我的Reference.cs中(通过svcutil生成 - BOTH类的命名空间是相同,即
System.Runtime.Serialization.DataContractAttribute
(Name="MyCommonClass", Namespace="http://A.B.MyCommonClassNamespace")])
但是,这两个文件都在2个单独的reference.cs
文件中,而reference.cs
中的命名空间由于属于两个单独的服务引用而不同。
因此,对于我的客户端应用程序,它们显示为两个完全不相关的类。
* 问题1 * :有什么方法可以向我的客户端应用程序指出service1.myCommonClass
和service2.myCommonClass
本质上是同一个类?
* 问题2 * :我的设计在运行中是否存在某些问题让我无法运行 陷入这个问题?
答案 0 :(得分:1)
不,你的设计很好。而不是从Visual Studio添加服务引用,而是在命令提示符下使用svcutil生成代理类。创建一个类库项目并将生成的.cs文件添加到其中。您也可以创建批处理文件并在预构建步骤中运行它 使用如下的svcutil在service dll(实现两个服务的dll)的单个文件中生成代理类
svcutil.exe /t:metadata "PATH\service1.dll" "PATH\service2.dll"
svcutil.exe /t:code *.wsdl *.xsd /o:Proxy.cs