如何将通用列表传递给WCF?

时间:2015-02-19 14:42:53

标签: c# wcf

我正在尝试从我的服务中获取一个复杂的对象。我的班级PackedObject过得很好。但是,当我试图让List<PackedObject>没有任何事情发生时。 如何通过WCF传递通用列表?

这是源代码:

我的界面

 [ServiceContract(SessionMode = SessionMode.Required, CallbackContract=typeof(ICallbackInterface))]
public interface IManager
{
    ...

    [OperationContract(IsOneWay = false, IsInitiating = false, IsTerminating = false)]
    List<PackedObject> GetByQuery(string typeName, string query);

    [OperationContract(IsOneWay = false, IsInitiating = false, IsTerminating = false)]
    PackedObject GetFirstByQuery(string typeName, string query);

    ...
}

打包对象

  [DataContract]
public class PackedObject
{
    [DataMember]
    private String _objTypeName;

    [DataMember]
    private Guid _id;

    [DataMember]
    private Dictionary<string, object> _fields = new Dictionary<string,object>();
    ...
}

接口实现:

    public List<PackedObject> GetByQuery(string typeName, string query)
    {
        ServerTableManager stm = getTableManager(typeName);
        List<DataRow> ldr = stm.GetByQuery(query);
        List<PackedObject> lpo = PackedObject.Pack(ldr,typeName);

        //PackedObjectList pol = new PackedObjectList(lpo);
        return lpo;
    }

2 个答案:

答案 0 :(得分:0)

我认为问题出在另一个地方。 调试时我发现DataContractSerializer拒绝在字典中将PackedObject序列化为空值。

答案 1 :(得分:-1)

  1. 尝试将您的课程序列化。
  2. 在客户端输入结果。
  3. 希望这两个能解决你的问题。