gpt4 book ai didi

WCF 契约(Contract)返回接口(interface)可能导致序列化问题?

转载 作者:行者123 更新时间:2023-12-04 10:22:31 25 4
gpt4 key购买 nike

我正在尝试定义一个返回接口(interface)的 WCF 契约(Contract),如下所示:

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

为了让它工作,我认为我的界面( IMyInterface )必须实现 ISerializable确保可以序列化实现我的接口(interface)的类。这意味着我必须为任何实现我的接口(interface)的类手动实现序列化。

如果使用不可序列化的类,我似乎要么使用我的接口(interface)并冒运行时错误的风险,要么我让接口(interface)实现 ISerializable并且有手动实现的相关麻烦。

我是否让自己感到困惑并遗漏了一些明显的东西?其他人如何使用 WCF 返回接口(interface)并避免此问题?

非常感谢。

最佳答案

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

因此,您必须通过 KnownTypeAttribute 将类设置为合约的接口(interface)部分。 .

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

关于WCF 契约(Contract)返回接口(interface)可能导致序列化问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/416457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com