gpt4 book ai didi

c# - 如何在 View 状态中存储对象?

转载 作者:太空狗 更新时间:2023-10-30 00:03:33 25 4
gpt4 key购买 nike

我正在使用 EWS 开发我的电子邮件客户端。我发现如果我将 ItemId 存储在 viewstate 中,它会导致异常:

Type 'Microsoft.Exchange.WebServices.Data.ItemId' in Assembly 'Microsoft.Exchange.WebServices, Version=14.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.

如果我将 ItemId 存储为如下字符串:

ViewState["itemId"] = id.ToString();

然后尝试往回投,

ItemId id = (ItemId)ViewState["itemId"];

它说我无法从字符串转换为 ItemId。有什么想法吗?

最佳答案

您正在存储字符串并需要 ItemId。你应该存储为

ItemId itemId = new ItemId();
ViewState["itemId"] = itemId;

但是,由于 ItemId 不可序列化,因此无法存储。要存储它,请使您的可序列化类继承自 ItemId 并覆盖所有成员并将其存储在 ViewState 中

[Serializable]
public class MyItemId: ItemId {
// override all properties
}

这样存储

MyItemId itemId = new MyItemId();
ViewState["itemId"] = itemId;

并检索

MyItemId id=(MyItemId)ViewState["itemId"];

关于c# - 如何在 View 状态中存储对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574976/

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