在私有/公共属性中获取/设置会话变量是否可以?
private List<FileAttachment> fileAttachments;
public List<FileAttachment> FileAttachments
{
get
{
if (Session["key"] != null)
{
fileAttachments = (List<FileAttachment>)Session["key"];
}
return fileAttachments;
}
set
{
fileAttachments = value;
Session["key"] = fileAttachments;
}
}
这里的目标是我希望容器类(该属性所在的用户控件)能够根据实体设置List<T>
并显示存储在数据库中的现有附件。
答案 0 :(得分:1)
这不是很安全; List<T>
不是线程安全的。
在将列表分配给属性后,您永远不能修改列表,因为其他一些请求线程可能正在读取它。
因此,您应该将其设为ReadOnlyCollection<T>
而不是List<T>
(并确保您的FileAttachment
类是不可变的或线程安全的)
除此之外,它取决于财产的位置 如果它在控件或页面上,那很好。