我有一个WCF服务,我试图在我的一个操作合同中返回一个List(其中IWatchable是我构建的自定义接口)。当我在客户端上测试服务时,该方法返回object[]
而不是List<IWatchable>
。是否有可能返回一个IWatchable列表,因为IWatchable是一个与WCF的接口?如何通过WCF列表<Interface>?
方法:
public List<IWatchable> GetWorkload(Guid nodeId, int maximum)
IWatchable:
public interface IWatchable
{
string ActionName { get; set; }
Guid ActionReference { get; set; }
}
希望多一点信息,将有助于...
我有一个派生的接口:
public interface IAMRAWatchable: IWatchable
和三个concre从IAMRAWatchable
TE实现:
public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...
在返回List<IWatchable>
我想送一个InstrumentationWatch
和OutputWatch
到客户端我的WCF方法......这是可能的,或者我要对这个错误的方式?
解决
感谢约翰,我发现我的解决方案。 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)
您是如何创建客户端的(从头开始/ svcutil /添加服务参考)? – 2009-08-03 05:13:02
我尝试了两个结果相同的结果 – DennyFerra 2009-08-03 05:20:56