問題タブ [overriding]
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# - C# でクラス メソッドを拡張メソッドでオーバーライドする方法はありますか?
クラス内のメソッドを拡張メソッドでオーバーライドしたい場合がありました。C#でそれを行う方法はありますか?
例えば:
私がこれをやりたかったのは、文字列のハッシュをデータベースに保存し、文字列クラスのハッシュを使用するすべてのクラス (つまり、辞書など) で同じ値を使用できるようにすることです。組み込みの .NET ハッシュ アルゴリズムは、フレームワークのあるバージョンから次のバージョンへの互換性が保証されていないため、独自のものに置き換えたいと考えています。
クラスメソッドを拡張メソッドでオーバーライドしたい場合が他にもあるので、文字列クラスまたはGetHashCode
メソッドに固有のものではありません。
既存のクラスをサブクラス化することでこれを実行できることはわかっていますが、多くの場合、拡張機能を使用して実行できると便利です。
xcode - OS Xでmalloc()、calloc()、free()などをオーバーライドするにはどうすればよいですか?
最新のXCodeとGCCを想定して、メモリ割り当て関数をオーバーライドする適切な方法は何ですか(演算子new / deleteも同様だと思います)。デバッグメモリアロケータはゲームには遅すぎます。最小限の影響で自分で実行できるいくつかの基本的な統計が必要です。
Linuxではフックのおかげで簡単だと知っています。これは10年前にHeapManagerを書いたときのcodewarriorでは簡単なことでした。
悲しいことに、smartheapにはもうmacバージョンがありません。
c++ - コンストラクター内での仮想関数の呼び出し
2 つの C++ クラスがあるとします。
次のコードを書くと:
2に設定されていると予想されるかもしれませんn
。
が 1 に設定されていることn
がわかりました。なぜでしょうか。
django - Django:プロジェクトごとではなくアプリごとに「オーバーライドできない」管理テンプレートをオーバーライドしますか?
Django のドキュメントには、次のことが明確に記載されています。
contrib\admin\templates\admin のすべてのテンプレートがアプリごとまたはモデルごとに上書きされるわけではありません。
次に、できるものをリストします。そして、base.html
私が興味を持っているものはリストされていません。プロジェクトごとにオーバーライドできますが、アプリごとにはオーバーライドできません。base_site.html
index.html
私の質問は: django.contrib.admin 内のコードを編集する必要のない方法はありますか? 私はいくつかのモンキーパッチソリューションを喜んで検討します:-)。アプリのディレクトリ内にこれら 3 つのファイルのカスタム バージョンがありtemplates
、アプリを使用する各プロジェクトでそれらを使用する必要があります。
私が興味を持っている理由は、大幅にカスタマイズされた管理インターフェイスを備えた大規模で再利用可能なアプリを作成しているためです。カスタム テンプレートを、アプリが使用される各プロジェクトのテンプレート ディレクトリに追加します。これらのコア テンプレートに新しい変更を加えた新しいバージョンのアプリをリリースすると、影響を受けるプロジェクトにすべてを再コピーすることになります。うーん。
選択したいくつかのテンプレートのみをアプリごとにオーバーライド可能にするという決定の背後にある理由を理解しています。結局のところ、それらすべてをオーバーライドできるとしたら、どのアプリのオーバーライドされた管理者が優先されるのでしょうか?
しかし、私の場合、アプリはいくつかのクライアント プロジェクトの「目玉」となり、それらのプロジェクトの他のアプリは単なる補助的な役割になります。
既存のテンプレートの CSS ベースのカスタマイズは、これまでのところしか得られません。絶対に必要でない限り、JavaScript DOM 操作ソリューションに頼ることをためらっています。
頭に浮かぶ1つの解決策は、カスタムbase.html
などのテンプレートを appname/templates/admin/ 内に配置し、それらをプロジェクトのテンプレートフォルダーにシンボリックリンクすることです。そうすれば、アプリの更新はプロジェクト レベルで自動的に有効になります。
シンボリックリンクは、より良い方法が提案されていない場合、おそらく私の選択方法ですが、誰かがより良い解決策を持っているかどうかを知りたいです.
c++ - 同じ関数、クラス階層の異なる戻り値の型
次のようなクラス階層があります。
ここで、価格と数量を乗算して値を計算する関数を作成する必要があります。その目的は、将来的に新しいクラスを追加することをできるだけ簡単にすることです。お気づきかもしれませんが、これらのフィールドのデータ型はクラスによって異なるため、これは単純ではありません。実際には、概念的には同じことを行うこれらの関数がありますが、プログラミング用語では、これらは異なる操作です。
必要なカット アンド ペーストの量を最小限に抑えるために、これまでに考えられる解決策は、テンプレート関数を使用することです。
これで問題なく機能しますが、これは、各クラスですべてのメンバー関数を定義する必要があることを意味します。たとえば、getValue という関数が必要な場合は、これらのテンプレート関数がさらにたくさん必要になります。
クラス メンバーのデータ型は、クラスが定義された時点で既知であるため、それらを関数定義に再び配置する必要があるのは重複しているように見えます。関数定義でこのすべてのテンプレート ビジネスを回避する方法はありますか?
ありがとうございました。
アンディ
PS 次の質問を見たことがありますが、その質問の問題は少し異なります: データに応じて異なるデータ型を返す (C++)
c# - MethodInfo が基本メソッドのオーバーライドであるかどうかを判断する方法
型インスタンスの GetMethod 呼び出しから取得した MethodInfo オブジェクトが、型またはそのベースによって実装されているかどうかを判断しようとしています。
例えば:
ToString メソッドは Foo クラスに実装されている場合とされていない場合があります。foo の実装を取得しているかどうかを知りたいですか?
関連する質問
java - Javaで抽象メソッドを実装するときに@Overrideアノテーションを追加する必要がありますか?
Javaで非仮想メソッドをオーバーライドする場合は、@Override
アノテーションの使用をお勧めしますが、抽象メソッドを実装するとどうなりますか?その時も使うべき@Override
ですか?
c++ - C++関数のオーバーライド
私には3つの異なる基本クラスがあります。
次に、次のようなベースから派生します(A、B、またはCの代わりにXを使用します)。
3つの異なる基本クラスで関数はどのようにオーバーライドされますか?次の3つの仮定は正しいですか?他に注意点はありますか?
- BaseAでは、子クラスはコンパイルされず、純粋仮想関数は定義されません。
- BaseBでは、BaseB*またはChild*でfooを呼び出すときに、子の関数が呼び出されます。
- BaseCでは、Child *でfooを呼び出すときに子の関数が呼び出されますが、BaseB *では呼び出されません(親クラスの関数が呼び出されます)。
java - Javaは他のオブジェクトで親オーバーライドメソッドを呼び出すことができますが、サブタイプは呼び出すことができませんか?
ここで動作しているJavaコード
Testクラスの印刷を実行します
質問1:実行時のオブジェクトCのタイプはMyTCupですが、常にスーパーメソッドを呼び出すことができます。オブジェクトを初期化した後、MyTCup内のメモリにメソッドスタックがあり、実行時にコードのように呼び出すことができますか?
質問2:他のオブジェクトでスーパーメソッドを呼び出す方法はありません。私が知っているように、c++はいつでも親メソッドを呼び出すためにキャストできます。なぜJavaと違うのですか?
javascript - Inject を使用して Webbrowser Control から一部の Javascript を無効化/オーバーライドしますか?
エラーを引き起こし、ページが完全にレンダリングされない特定の JavaScript を含むページにアクセスしようとしています。
と
これらのエラーはどちらも、フレーム経由ではなくページに直接アクセスしているという事実に関連しています。
ページの独自のクローンを作成してホストすることでこれを回避しましたが、その解決策が気に入らず、どうにかする方法があるかどうか疑問に思っていました
オーバーライド/変更、またはさらに良いことに、Web ブラウザー コントロールを介した Javascript インジェクションを使用してそのコードを消去します
ありがとう