gpt4 book ai didi

windows-8 - 在 SuspensionManager.SessionState 中存储字符串以外的内容

转载 作者:行者123 更新时间:2023-12-04 23:27:26 28 4
gpt4 key购买 nike

示例应用程序包括一个 Suspension Manager 类,该类将 session 状态存储在 Dictionary 中,但绝不会尝试在其中存储除字符串之外的任何内容。

每当我存储除字符串之外的任何其他内容时,然后触发序列化,我都会收到以下错误

不应输入数据协定名称为“RuntimeType:http://schemas.datacontract.org/2004/07/System”的“System.RuntimeType”。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。

我是否必须做其他事情才能在 SessionState 中存储其他类型?

最佳答案

你需要做两件事:

首先,确保您要(反)序列化的类型用 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; }
}

其次,您需要调用 SessionManager 的 AddKnownType<T>() (其中 T 是您需要的类型),然后再尝试对其进行(反)序列化。

关于windows-8 - 在 SuspensionManager.SessionState 中存储字符串以外的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435510/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com