問題タブ [static-classes]
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.
java - Java内部クラスと静的ネストクラス
Javaの内部クラスと静的ネストクラスの主な違いは何ですか?設計/実装は、これらのいずれかを選択する上で役割を果たしますか?
.net - ASP.NET MVC、ActionFilter、静的クラス、データの受け渡し
次のシナリオについて、ご意見とより良い提案をお聞かせください。
私は、何らかの仕事をして何らかの値を出すカスタム ActionFilter を定義しました。その値をコントローラーのアクションとモデルで使用したいと思います。
これで、TempData を使用してこの値を ActionFilter から任意のコントローラー アクション メソッドに渡し、返されたビューに渡されるすべてのモデルにこの値を配布できます。
私はそれがうまくいくと確信していますが、このTempDataは、実際には誰も必要としないセッションに存在します。値は、単一のリクエストの間、コード内で排他的に使用され、その後は実質的に無効になると想定されています。
私は2つのオプションを考え出しました:
ActionFilter では、この値を OnActioExecuting() の TempData に設定し、OnActionExecuted() で削除します。OnActionExecuted が呼び出されるまでにコントローラー アクションが終了し、応答が既に生成されており、この TempData コンテンツがまだセッションに到達していないことを正しく理解していますか?
カスタム静的クラス (ロジック) のいずれかで、この値のパブリック プロパティを定義するだけで、必要なときにいつでも使用できます。この静的フィールドは、OnActionExecuting() と実際のコントローラー メソッドの実行の間で失われませんか? サーバーでのリクエスト処理中にこの値が失われる可能性がある他の問題はありますか?
まだ検討していない他の/より良いオプションはありますか?
c# - 静的クラス内でのセッション処理のラッピング
新しいオブジェクトを何度も作成したくなかったので、すべての直接的なセッション対話を別のクラスに分けて静的にしました。ただし、並行性の問題やその他の不安定な驚きがないことを確認したいと思います。
コードは次のとおりです。
c# - 静的クラスがインターフェイスを実装できないのはなぜですか?
TestRepository
私のアプリケーションでは、生データ アクセス ( 、など)SqlRepository
を行うリポジトリを使用したいと考えています。FlatFileRepository
このようなリポジトリはアプリケーションのランタイム全体で使用されるため、それを静的クラスにすることは賢明なことのように思えました。
常に再生成する必要はありません。リポジトリを交換可能にしたいので、共通のインターフェースを実装する必要があります: IRepository
. しかし、そうしようとすると、次のようになります。
静的クラスはインターフェースを実装できません
なぜ彼らはできないのですか?では、デザインを変更することをどのように提案しますか? 使用できるパターンはありますか?
更新
5 年後: この質問は 2 万回以上訪れ、リポジトリ パターンの欠点について学び、IoC について学び、私の質問が不十分に定式化されていることに気付きました。
インターフェイスの C# 仕様が何であるかを実際に尋ねたわけではなく、なぜこの特定の方法で故意に私を制限していたのかということです。
実際の答えは、インスタンスまたは型でメソッドを呼び出すための構文が異なるということです。しかし、質問は閉じられています。
static-classes - 静的クラスは避けるべきですか?
静的クラスは悪い習慣と見なされますか? 数日前にこれに関する記事を読みました (見つけられませんでした、申し訳ありません)。基本的に、静的クラス (特に「ヘルパー」クラス) を持つことは通常、悪いコードの兆候であると述べていました。これは正しいですか、そうである場合、その理由は何ですか?
c# - C# で Enumerable クラスを拡張しますか?
C# で Enumerable クラスを拡張して、長いパラメーターを受け入れる新しい Range メソッドを追加する状況があります。このようなメソッドを定義することはできません
拡張メソッドは、そのオブジェクトを介してのみアクセスできるためです。そして、それは私にエラーを与えます
'System.Linq.Enumerable': 静的型はパラメーターとして使用できません
誰かがこれを行う方法を明確にすることができますか
注: 拡張メソッドを使用せずにこれを簡単に解決できることはわかっていますが、この Enumrable クラスが必要でした。
.net - 静的クラスのモック
winspoolのいくつかのネイティブメソッドをラップする静的クラスがあります。
単体テスト用にモックしたいのですが、パターンが見つかりませんでした。(誰もが静的クラスを避けていますか?)
c# - 静的クラスの拡張メソッド?
私はクラスを拡張するために以下を行うことができることを知っています。拡張したい静的クラスがあります。どうすればいいですか?書きたいClassName.MyFunc()
c# - 奇妙な静的クラスの問題
以下は私の非常に単純な静的クラスです。何が悪いのかわからない。正しい「using」ステートメントを持つ非静的クラスで使用しています。Intellisenseは、クラスとその1つのメソッドを認識します。
エラーが発生します
「SQLUserDataManager」という名前は、現在のコンテキストには存在しません。」
更新:これは私が使用している行です。
問題が解決しました
コンパイル中にエラーが発生したファイルを含むDLLがあります。このDLLには、このファイルを含む新しいファイルをまだ含めていませんでした。私はファイルを含めました、そしてすべては良いです!^ _ ^