1

私は .net が初めてで、読み取り専用オブジェクト構造を作成する最善の方法についてアドバイスを求めています。これらの構造はコンパイル時に配置され、まったく変更されません。私のオブジェクトは次のようになります。

Public Structure CatPair
    Public code, name As String
End Structure

Public Structure Category
    Public code, name As String
    Public subcategories() As EpfPair
End Structure

Public ReadOnly categories() As Category = {
    New Category With {.code = "Code1", .name = "cat title 1", .subcategories = Nothing
    },
    New Category With {.code = "Code2", .name = "cat title 2", .subcategories = Nothing
    },
    New Category With {.code = "Code3", .name = "cat title 3", .subcategories = Nothing
    },
    New Category With {.code = "Code4", .name = "cat title 4", .subcategories = {
            New CatPair With {.code = "subC1", .name = "subcat title 1"},
            New CatPair With {.code = "subc2", .name = "subcat title 2"},
            New CatPair With {.code = "subc3", .name = "subcat title 3"}
        }
    },
    New Category With {.code = "Code5", .name = "Cat title 5", .subcategories = Nothing
    }
}

したがって、オブジェクトは実際にはネストされた定数のテーブルであり、サブカテゴリを持つものと持たないものがあります。ここでの私の目標は次のとおりです。

  1. すべてが読み取り専用であることを確認し、
  2. このコードを使用しない ASP.net ページで、ページが読み込まれるたびにオブジェクトを初期化するという大きなオーバーヘッドが発生しないように (可能であれば) 実装してください。App_Code フォルダー内のモジュールでオブジェクトを宣言したので、コンパイラーがオブジェクトに触れていないページをどのように処理するかわかりません。
4

1 に答える 1

1

あなたが提供したコードはあなたの目標を達成しません。オブジェクトを不変にするには、少なくともオブジェクトのプロパティを読み取り専用 (セッターなし) にし、代わりにすべてをコンストラクターパラメーターに渡すだけで済みます。

于 2012-09-03T07:22:57.603 に答える