0

プライベート/パブリック プロパティ内でセッション変数を取得/設定しても問題ありませんか?

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>どのエンティティに応じて を設定し、データベースに格納されている既存の添付ファイルを表示できるようにすることです。

4

1 に答える 1

1

これはあまり安全ではありません。List<T>スレッドセーフではありません。

リストをプロパティに割り当てた後は、リストを変更することはできません。他のリクエスト スレッドがそれを読み取っている可能性があるからです。

ReadOnlyCollection<T>したがって、ではなくにする必要がありますList<T>
(そして、FileAttachmentクラスが不変またはスレッドセーフであることを確認してください)


それ以外は、物件がどこにあるかによって異なります。
コントロールまたはページ上にある場合は問題ありません。

于 2012-05-08T03:21:42.170 に答える