当前位置:  开发笔记 > 编程语言 > 正文

WCF合同返回接口可能导致序列化问题?

如何解决《WCF合同返回接口可能导致序列化问题?》经验,为你挑选了1个好方法。

我试图定义一个返回接口的WCF合约,如下所示:

[ServiceContract]
public interface IMyContracts
{
    [OperationContract]
    IMyInterface GetData(string request);
}

为了实现这一点,我认为我的接口(IMyInterface)必须实现ISerializable以确保可以序列化实现我的接口的类.这意味着我必须为实现我的接口的任何类手动实现序列化.

如果使用的是不可序列化的类,或者我使接口实现ISerializable并且具有手动实现的相关麻烦,那么我似乎使用我的接口并冒险运行时错误.

我迷惑自己,错过了一些明显的东西吗?其他人如何使用WCF返回接口并避免此问题?

非常感谢.



1> Krzysztof Ko..:

AFAIK,问题不在于序列化,而是因为你正在返回抽象实体(一个接口).抽象是一个OO概念,而不是SOA概念.因此,您的客户端的wcf堆栈可能不知道如何处理接口后面的类.如果客户端不知道接口背后的类,该怎么办?客户端的WCF堆栈必须反序列化它,并且要做到这一点,它必须知道该类.

因此,您必须通过KnownTypeAttribute将类放在合同的接口部分后面.

您也可以使用似乎更灵活的ServiceKnownTypeAttribute类.不过,请记住客户端必须知道类型,否则您将获得异常.


@Timwi,尽管如此,我认为你误解了这个问题,或者WCF是如何工作的.而不仅仅是声称_It不是真的_请提供支持索赔的来源的参考.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有