問題タブ [static-constructor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - System.TypeInitializationException:「ヒント」の型初期化子が例外をスローしました
静的リストの値にアクセスしようとしています。ただし、そうしようとすると、この例外がスローされます。
System.TypeInitializationException:「Tips」の型初期化子が例外をスローしました。---> System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません
リストのあるクラス。
これはリストにアクセスしようとしているクラスです。
これが発生する原因は何ですか?これらのヒントを保存するためのより良い方法はありますか?WindowsPhoneページの2つのテキストブロックに出力するためのヒントのリストが必要です。
java - 抽象クラスの静的コンストラクター?
次のサンプル状況を検討してください。
new Parent()
明らかに、親は抽象的であるため、これを行うことはできません ( ) が、実際には親は必要ありません。このメソッドをサブクラスに自動的に提供したい。
.allocate()
別の可視コンストラクターを追加する代わりに、「静的コンストラクター」アプローチを使用することをお勧めします。
このデフォルトの実装をParent
クラスに配置する方法はありますか?それとも、各サブクラスに同じコードを含める必要がありますか?
別のオプションは、親から「抽象」を取り除くことだと思いますが、抽象的に適合します-親タイプのオブジェクトは決して必要ありません。
前もって感謝します。
c# - 設計上の問題: 静的クラスは 1 回しか初期化されず、単体テストが中断されます
Configuration
システム全体のデータ設定を担当する静的クラスがあります。コンストラクターでレジストリから特定の値を読み込み、すべてのメソッドはこれらの値に基づいています。レジストリから値を取得できない場合 (アプリケーションがまだアクティブ化されていない場合に発生する可能性があります)、例外がスローされ、これは に変換されますがTypeInitializationException
、これは問題ありません。
NUnit を使用して単体テストを作成し、Configuration のコンストラクターがすべてのケース (通常の値、空白の値、Null 値) を正しく処理することを確認しました。各テストは、関連する値を使用してレジストリを初期化し、構成内のメソッドを呼び出します。問題は、NUnit が最初に Null テストを実行することを決定したことです。レジストリをクリアし、構成を初期化し、例外をスローします。すべて問題ありません。しかし、これはコンストラクターが失敗した静的クラスであるため、他のテストのためにクラスを再構築することはなく、すべて失敗します。
Null テストがなくても問題が発生する可能性があります。なぜなら、Configuration はおそらく (推測しているように) それを使用するすべてのクラスに対して 1 回初期化されるからです。
私の質問は次のとおりです。リフレクションを使用して各テストのクラスを再構築する必要がありますか、またはこのクラスを再設計して、コンストラクターではなくプロパティのレジストリをチェックする必要がありますか?
c# - メンバーを呼び出さずに静的コンストラクターが呼び出されるようにする方法
静的コンストラクターを持つクラスがあります。
メンバーを呼び出したり使用したりせずに静的コンストラクターを呼び出したいのですが、コンストラクターがまだ呼び出されていない場合に限ります。
リフレクションを使ってみました。リフレクションを使用すると、静的コンストラクターを (何度も) 呼び出すことができますが、以前に既に呼び出されているかどうかを確認できません。
どうすればいいですか?
編集
これは、私が話している1つのクラスだけではなく、それ以上のクラスになる可能性があります. たとえば、特別な属性でマークされたすべてのクラスです。
entity-framework - 静的コンストラクターで Database.SetInitializer()?
多くの人は、以下に示すコードを使用する必要がある理由をおそらく認識しています。ただし、このロジックをレイヤーに分離したいので、Web レイヤーで Entity Framework DLL を参照したくないため、このコードをDbContext
クラスの静的コンストラクターに配置することになりました。
これは悪い考えですか?これを行うことでアプリのパフォーマンスに影響はありますか?
c# - 静的コンストラクターとグローバルクラスの静的インスタンスの定義の違い
次のような静的コンストラクターの違いは何ですか:
また、グローバル クラスで静的インスタンスを次のように定義します。
それぞれのタイプの違いは?また、どちらが使いやすいですか?
c# - 静的コンストラクターは戻り値の型を持つことはできませんが、C# では静的メソッドには戻り値の型が必要です
最近、OOPS についてブレインストーミングを行っているときに、突然 1 つの質問が頭に浮かびました。関連性があると思うので、コミュニティに質問することにしました。質問は次のとおりです。
静的コンストラクターは戻り値の型 (int、string など) を持つことはできませんが、C# では静的メソッドには戻り値の型が必要です。
c#コンパイラは、コンパイルを通過するために両方の状況をどのように区別しますか?
c# - シングルトンの熱心な読み込みと保存
別の質問への回答を提案しようとする一環としてDictionary
、自己登録シングルトン インスタンスを作成したいと考えました。具体的には、次のようなものです。
ただし、AdminRole
にアクセスしないとコンストラクタが呼び出されないため、辞書Instance
に追加されていません。Roles
を使用して辞書をインスタンス化できることはわかっていますが、クラスを変更{ AdminRole.Instance.Name, Admin Role}
する必要がないように新しいロールを追加したいと考えています。Role
助言がありますか?これは、文字列でシングルトンにアクセスするための優れた設計でもありますか?
結果をテストするコード行は次のとおりです。
KeyNotFound
例外(または)が発生しなければ成功ですnull
。
( など)を明示的に初期化することはできますが、サブクラスを初期化することはできません。既存のものを変更する必要なく、サブクラスを追加して辞書にサブクラスを含めることができるようにするという考え方です。Role
Role.Initialize()
asp.net - asp.net:ページへのポストバックがあるたびに静的コンストラクターが呼び出されますか?
これは、 Asp.net Static Variable Life time Across Refresh および PostBackの重複の可能性がありますが、私のクエリは少し異なります。
default.aspxというページを持つWebアプリケーションがあります。静的コンストラクターと静的プロパティ「MyProperty」を持つパブリック静的クラス「MyClass」があります。このクラスは default.aspx.cs クラスの外部にあります。
静的クラスのプロパティは、ページの読み込み時とボタンのクリック時に割り当てられます。
これで、クラスのプロパティが呼び出されるか割り当てられるたびに、型の静的コンストラクターが一度だけ呼び出されることがわかりました。これはあたりAppDomain
です。その後、静的コンストラクターが呼び出されることはありません。
また、アプリ ドメインは、プロセス内にロードされた一連のアセンブリ間の分離レイヤーを提供する .NET コンストラクトであることも知っています。
ここでの私の質問は
- 誰か
AppDomain
がasp.netに関して詳しく説明してもらえますか? 関連リンクも役に立ちます。 - ポストバックごとにページ オブジェクトが作成および破棄されることはわかっています。では、次のコードでは、ポストバックがあるたびに静的コンストラクターが呼び出されるのでしょうか?
静的コンストラクターにブレークポイントを保持して、コードのデバッグを試みました。ページが初めて読み込まれたときにブレークポイントにヒットしましたが、ボタンをクリックしたときにはヒットしませんでした。しかし、IIS でホストされている場合にこれが同じように機能するかどうかはわからないので、専門家の意見を得たい. ブラウザはIE10でした。
文の構成が正しくなかったり、何か間違ったことを述べていない場合はお知らせください。
前もって感謝します。
よろしく、
サマール
c# - 静的コンストラクターは、静的フィールドの前または後にいつ実行されますか?
私が持っていると考えてください
そして、私はこのようにそれを使用します
しかし、残りのコードは期待どおりに機能しませんでした。次にClassDを書き直したところ、うまくいきました
これら 2 つのコード サンプルの違いは何ですか? 私は彼らが同じ振る舞いをすることを期待していましたが、そうではありません。