我是 wcf 和 windows phone 8 应用程序的新手并调用 wcf 服务(其他开发人员)并尝试反序列化数据它有时工作正常但大多数时候它给了我错误
“数据合约类型 'TEST.Model.Response`1[[TEST.Model.Announcement, TEST, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' 无法反序列化,因为成员 'ResponseData' 不是公开。将成员设为公开将修复此错误。或者,您可以将其设为内部,并在程序集上使用 InternalsVisibleToAttribute 属性以启用内部成员的序列化 - 有关更多详细信息,请参阅文档。请注意,这样做具有一定的安全性影响。”
我的模型类是
public class Response<T> where T: class
{
public string MethodName { get; set; }
public int ResponseCode { get; set; }
public string ResponseMessage { get; set; }
public List<T> ResponseData { get; set; }
}
public class Announcement
{
public int AnnouncementId { get; set; }
public string AnnouncementTitle { get; set; }
public string CreatedBy { get; set; }
public string CreatedDate { get; set; }
public string DataShortVersion { get; set; }
public string ModifiedBy { get; set; }
public string ModifiedDate { get; set; }
public int SortIndex { get; set; }
}
当我尝试调用时
var request = ar.AsyncState as WebRequest;
Stream reader = request.EndGetResponse(ar).GetResponseStream();
DataContractJsonSerializer jsonSerializer ;\\
jsonSerializer = new DataContractJsonSerializer(typeof(TEST.Model.Response<TEST.Model.Announcement>));
Response<Announcement> objResponse = (Response<Announcement>)jsonSerializer.ReadObject(reader); //error raised