C# 服务引用覆盖类型

C# 服务引用覆盖类型,c#,.net,reference,C#,.net,Reference,我创建了3个项目:类库(以下两个引用)、web服务和客户端应用程序。Web服务作为服务引用(连接的服务)添加到客户端项目。问题是,我需要从web服务中获取类型为ClassLibrary.AB的对象,但默认情况下,我得到了ClientProject.ServiceProject.AB(因为服务引用似乎与任何其他引用一样工作,它希望AB类型是引用类型的成员,在本场景中ServiceProject.AB)。我尝试打开和关闭“配置服务引用…>在引用的程序集中重用类型”,但没有成功。您能给我一些指导吗?我

我创建了3个项目:类库(以下两个引用)、web服务和客户端应用程序。Web服务作为服务引用(连接的服务)添加到客户端项目。问题是,我需要从web服务中获取类型为
ClassLibrary.AB
的对象,但默认情况下,我得到了
ClientProject.ServiceProject.AB
(因为服务引用似乎与任何其他引用一样工作,它希望
AB
类型是引用类型的成员,在本场景中
ServiceProject.AB
)。我尝试打开和关闭“配置服务引用…>在引用的程序集中重用类型”,但没有成功。您能给我一些指导吗?我应该如何配置它以获得
ClassLibrary
名称空间的对象?澄清代码:

类库AB类:

using System;
using System.Runtime.Serialization;

namespace ClassLibrary
{
    [Serializable]
    [DataContract(Name = "AB", Namespace = "ClassLibrary")]
    public class AB
    {
        [DataMember(Name = "a")]
        private int a;
        [DataMember(Name = "b")]
        private byte[] b;
        <some_more_methods_here>
    }
}
失败的客户端代码:

using ClassLibrary;
[...]
byte[] x = [...]
var serviceProjectSoapClient = new ServiceProject.ServiceProjectSoapClient();
AB ab = new AB();
ab = serviceProjectSoapClient.calledMethod(x); // here error occurs because of types missmatch

嗯,我完全明白你是从哪里来的。但该服务可能不会公开该模型的最新版本。考虑到这一点。你可能有一个因苏厄在你的类型和类它自己。很难找到或调试。我认为类本身是可以的,因为如果我使用
ServiceProject.AB=serviceProjectSoapClient.calledMethod(x),我可以毫无问题地使用它在客户端。我还多次重新构建服务器和客户端应用程序。该类将自动生成,任何问题都可能导致它们不使用现有库。就像这个问题的答案一样:。您的类可能不会被破坏,但仍然可以停止重用。
using ClassLibrary;
[...]
byte[] x = [...]
var serviceProjectSoapClient = new ServiceProject.ServiceProjectSoapClient();
AB ab = new AB();
ab = serviceProjectSoapClient.calledMethod(x); // here error occurs because of types missmatch