我正在尝试从我的服务中获取一个复杂的对象。我的班级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;
}
答案 0 :(得分:0)
我认为问题出在另一个地方。
调试时我发现DataContractSerializer
拒绝在字典中将PackedObject
序列化为空值。
答案 1 :(得分:-1)
希望这两个能解决你的问题。