gpt4 book ai didi

wcf - 如何通过 WCF 传递 List

转载 作者:行者123 更新时间:2023-12-04 17:42:12 29 4
gpt4 key购买 nike

我有一个 WCF 服务,我试图在我的一个操作契约(Contract)中返回一个列表(其中 IWatchable 是我构建的自定义接口(interface))。当我在客户端测试服务时,该方法返回 object[] 而不是 List<IWatchable> .是否可以返回 IWatchable 列表,因为 IWatchable 是 WCF 的接口(interface)?

方法:

public List<IWatchable> GetWorkload( Guid nodeId, int maximum )

可观看:
public interface IWatchable
{
string ActionName { get; set; }
Guid ActionReference { get; set; }
}

希望更多信息会有所帮助...

我有一个派生接口(interface):
public interface IAMRAWatchable: IWatchable

以及来自 IAMRAWatchable 的三个具体实现:
public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...

在我的 WCF 方法中返回 List<IWatchable> 我想发送 InstrumentationWatchOutputWatch给客户...这是可能的还是我走错了路?

已解决

感谢约翰,我找到了我的解决方案。 KnownType 自从我使用 以来一直没有工作List<IWatchable> - 所以我将我的列表包装到一个新类中,并向其中添加了属性。我需要重构我的代码,但对于其他对此感兴趣的人来说是这个类:
[DataContract]
[KnownType( typeof( InstrumentationWatch ) )]
[KnownType( typeof( OutputWatch ) )]
public class WorkInfo
{
[DataMember]
public List<IWatchable> WorkQueue { get; set; }
}

和我的 WCF 方法:
public WorkInfo GetWorkload( Guid nodeId, int maximum )

最佳答案

接口(interface)永远不能被序列化。它只是对行为的描述。

您可以序列化实现该接口(interface)的对象,但您必须告诉 WCF 它们的类型是什么。见 Data Contract Known Types .

关于wcf - 如何通过 WCF 传递 List<Interface>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1220733/

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