Mic*_*ael 4 windows-8 windows-runtime
示例应用程序包括一个Suspension Manager类,它将会话状态存储在Dictionary中,但从不尝试存储除字符串之外的任何内容.
每当我存储除字符串之外的任何其他内容,然后触发序列化,我得到以下错误
键入'System.RuntimeType',数据协定名称为'RuntimeType:http://schemas.datacontract.org/2004/07/System',不是预期的.考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.
我是否必须做其他事情才能在SessionState中存储其他类型?
小智 8
你需要做两件事:
首先,确保您的类型(de)序列化使用DataContract
属性来装饰,System.Runtime.Serialization
并确保它的成员被适当地修饰.例如在c#中:
[DataContract]
public struct Product
{
[DataMember]
public Guid Id { get; set; }
[DataMember]
public DateTime ManufactureDate { get; set; }
[DataMember]
public decimal Cost { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
其次,AddKnownType<T>()
在尝试(de)序列化之前,您需要调用SessionManager (T是您需要的类型).
归档时间: |
|
查看次数: |
2188 次 |
最近记录: |