我需要使用标准 wsdl 调用 web 服务操作,但客户端和服务器中的数据对象必须不同。
使用通用库中数据对象的接口,在客户端和服务器中为其创建代理类。
然后,我使用接口声明操作合同,但 WCF 不识别它。
我还尝试过使用 DataContractSerializerBehavior 并设置 knownTypes,但还没有成功。
有人可以帮我吗?我附上了一个包含更多细节的完整解决方案。
public interface Thing
{
Guid Id {get;set;}
String name {get;set;}
Thing anotherThing {get;set;}
}
[DataContract]
public class ThingAtServer: BsonDocument, Thing // MongoDB persistence
{
[DataMember]
Guid Id {get;set;}
//...
}
[DataContract]
public class ThingAtClient: Thing, INotifyPropertyChanged // WPF bindings
{
[DataMember]
Guid Id {get;set;}
//...
}
[ServiceContract]
public interface MyService
{
[OperationContract]
Thing doSomething(Thing input);
}
单击此处在 GitHub 上查看带有 TestCases的示例项目