ASP.NET MVCのコントローラ用の静的コンストラクタを使用するのはあまり一般的ではありません。正確に何を達成しようとしているのか分かりませんが、global.asax Application_Start
はアプリケーションの初期化を行うのに適しているようです。また、コントローラーがアクセスできる単一のストレージが何を意味していますか?セッションとは異なり、アプリケーション全体の格納に使用されるHttpContext.Cache
またはHttpContext.Application
オブジェクトを使用できませんか?また、スレッドセーフであるという利点もあり、それらのストレージへのアクセスを同期させる必要はありません。
静的コントローラのコンストラクタに関しては、デフォルトのコンストラクタの前に呼び出され、アプリケーションごとに1回しか呼び出されず、CLRによって保証される必要があります。このためには、正確に次のシグネチャ(プライベート、ノーリターンタイプ、含む型と同じ名前)を持つ必要があります:私は一度初期化するいくつかの情報構造を持つようにしたい
public class HomeController: Controller
{
// This is the exact signature of a static constructor
static HomeController()
{
}
}
1.(constのようなものが、ではない正確に)。これらの構造体を毎回初期化したくない。私は読み込み操作しかしないので、同期は必要ありません。私はキャッシュとアプリケーションを使用できることを知っていますが、そうしたやり方で、すべてのコントローラにこれらの構造体を可視化したいと思います。私は自分の道が正しいと言っているわけではないので、誰かが私の状況に対してより良い解決策を提供できるなら、どうかしてください。 – devfreak
2.私の静的コンストラクタシグネチャは、あなたが書いたものとまったく同じです。私はそれをデバッグしようとしており、2つのブレークポイントを静的および通常のコンストラクタに配置しようとしています。通常のコンストラクタは、静的なコンストラクタの前に呼び出されます。なぜどんなアイデア? – devfreak