我有一个WCF服务,我试图在我的一个操作合同中返回一个List(IWatchable是我建立的自定义界面).当我在客户端上测试服务时,该方法返回object[]而不是List<IWatchable>.是否可以返回IWatchable列表,因为IWatchable是与WCF的接口?
方法:
public List<IWatchable> GetWorkload( Guid nodeId, int maximum )
Run Code Online (Sandbox Code Playgroud)
IWatchable:
public interface IWatchable
{
string ActionName { get; set; }
Guid ActionReference { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
希望更多的信息将有所帮助......
我有一个派生界面:
public interface IAMRAWatchable: IWatchable
Run Code Online (Sandbox Code Playgroud)
以下三个具体实现IAMRAWatchable:
public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...
Run Code Online (Sandbox Code Playgroud)
在我的WCF方法中返回List<IWatchable>我想发送一个InstrumentationWatch和一个OutputWatch到客户端...这是可能的还是我以错误的方式进行此操作?
解决
感谢John,我找到了解决方案.KnownType自从我使用以来我没有工作List<IWatchable>- 所以我将我的列表包装到一个新类中并添加了属性.我需要重新考虑我的代码,但对于其他感兴趣的人来说,这个类是:
[DataContract]
[KnownType( typeof( InstrumentationWatch ) )]
[KnownType( typeof( OutputWatch ) )]
public class WorkInfo
{
[DataMember]
public List<IWatchable> WorkQueue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和我的WCF方法:
public WorkInfo GetWorkload( Guid nodeId, int maximum )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6109 次 |
| 最近记录: |