1
试图提交队列消息在消息主体中的对象,但接收到下一行例外与BrokeredMessage天青服务总线队列 - 序列化与BrokeredMessage
QueueClient queueClient = QueueClient.CreateFromConnectionString(_connectionString, _queuePathName);
var data = new ABSurvey
{
name = "somename",
version = 1,
language = "eng",
SelfSurvey = new Survey()
{
SurveyItems = new List<ISurveyItem>() { new SurveyItem(){IsSelected = true, ItemId = 1}},
SurveyPerception = Constants.Perception.Self
},
SelfConcept = new Survey()
{
SurveyItems = new List<ISurveyItem>() { new SurveyItem(){IsSelected = true, ItemId = 1}},
SurveyPerception = Constants.Perception.SelfConcept
}
};
BrokeredMessage message = new BrokeredMessage(data);
queueClient.Send(message);
异常消息 - 类型“调查”与数据合同名称'Survey:http://schemas.datacontract.org/2004/07/namespace'不是预期的。考虑使用DataContractResolver或将任何不知道的类型静态添加到已知类型的列表中 - 例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型的列表中。
这些都是我的模型 -
[DataContract]
public class ABSurvey
{
[DataMember] public string name;
[DataMember] public int version;
[DataMember] public string language;
[DataMember] public ISurvey SelfSurvey;
[DataMember] public ISurvey SelfConcept;
}
[DataContract]
public class SurveyItem : ISurveyItem
{
[DataMember]
public int ItemId { get; set; }
[DataMember]
public bool IsSelected { get; set; }
public SurveyItem()
{
ItemId = -1;
IsSelected = false;
}
}
[DataContract]
public class Survey : ISurvey
{
[DataMember]
public IList<ISurveyItem> SurveyItems { get; set; }
[DataMember]
public Constants.Perception SurveyPerception { get; set; }
public Survey()
{
SurveyItems = new List<ISurveyItem>();
}
}
public interface ISurvey
{
[DataMember]
IList<ISurveyItem> SurveyItems { get; set; }
[DataMember]
Constants.Perception SurveyPerception { get; set; }
}
public interface ISurveyItem
{
[DataMember]
int ItemId { get; set; }
[DataMember]
bool IsSelected { get; set; }
}
请帮助查找问题。
非常感谢plentysmart,它的工作。 – 2014-11-07 13:56:58