問題タブ [interface]

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.

0 投票する
2 に答える
3268 参照

c# - アセンブリから動的に読み込まれたインターフェイスを操作し、そのメンバーを呼び出す方法

このように、アセンブリをロードして、特定のインターフェイスを実装するすべての型を取得するためのコードがいくつかあります (asm が有効でロードされたアセンブリであると仮定します)。

これらのオブジェクトのインスタンスを作成し、オブジェクトのメソッドとプロパティを呼び出す必要があります。そして、後で使用できるように、作成されたオブジェクトへの参照を配列に格納する必要があります。

0 投票する
2 に答える
10910 参照

java - JPAマッピングインターフェイス

リストタイプがインターフェイスの場合、マッピングの作成に問題があります。抽象クラスを作成し、識別子列を使用する必要があるようですが、これは本当ですか?抽象クラスには抽象メソッドが含まれているだけなので、そうする必要はなく、インターフェイスを保持したいだけです。

私はそれをアカウントと呼ぶことができるインターフェースを持っています

これで、AccountOverSeasAccountとOverDrawnAccountの2つの具体的な実装者ができました。

Work withaListというクラスがあります

私は弁別子フィールドを見ていますが、これは抽象クラスに対してのみ実行できるようです。これは本当ですか?どんなポインタでもありがたいです。インターフェイスにディスクリミネーターを使用できますか?

0 投票する
6 に答える
244 参照

c# - メンバーを宣言するときにインターフェイスを指定できますか?

クラスのメンバーを Control にする必要があり、定義したインターフェイスを実装する必要があります。

このように宣言すると...

...その後、インターフェイスメソッドを取得しませんが、このように宣言すると...

...次に、Control メソッドを取得できません。MyMember を両方から継承する型に初期化する必要があることを指定する方法はありますか? MSDN で見つかりません。何かのようなもの...

... また ...

...ただし、どちらも機能しません。メンバーを宣言するときにインターフェイスを指定できますか? その場合、どのように指定できますか?

0 投票する
2 に答える
157 参照

asp.net - クラスのステップドリブンイベントを作成するには、どのインターフェイスを実装する必要がありますか?

データリーダークラスと同様の動作を作成したいのですが、次のことができるように、特注のメール送信プログラム用です

sender.Send()コマンドが送信する次の電子メールを準備し、存在する場合はtrueを返すように、ステッピング機能を利用するためのアドバイスされたインターフェイスまたはmustInheritクラスはありますか?

0 投票する
15 に答える
4366 参照

class - 静的なダック型言語はありますか?

メンバーを宣言するときにインターフェイスを指定できますか?

この質問についてしばらく考えた後、静的ダック型の言語が実際に機能する可能性があることに気づきました。定義済みクラスをコンパイル時にインターフェイスにバインドできないのはなぜですか? 例:

そのような機能をサポートする言語を知っていますか? Java または C# で役に立ちますか? 何らかの形で根本的に欠陥がありますか?MyClass をサブクラス化してインターフェイスを実装したり、Adapter デザイン パターンを使用して同じことを達成したりできることは理解していますが、これらのアプローチは不必要なボイラープレート コードのように思えます。

0 投票する
10 に答える
4307 参照

interface - ダックタイピングは古い「バリアント」型やインターフェースとどう違うのですか?

「ダックタイピング」というフレーズが頻繁に使われ、1 つまたは 2 つのコード例に出くわすことさえあります。私は忙しすぎ自分の研究をすることができません。誰か簡単に教えていただけますか?

  • 「ダックタイプ」とオールドスクールの「バリアントタイプ」の違い、および
  • バリアント型入力よりもダック型入力を好む可能性がある例を示します。
  • ダックタイピングを使用して達成する必要があるものの例を教えてください。

アヒルのタイピングの図は The Register の厚意により掲載

私は、この「新しい」構造の力を疑うことで、野鳥のように見えるつもりはありません。また、研究を拒否することで問題を回避しているわけでもありません。最近それ。私にはタイピング (別名動的タイピング) がないように見えるので、すぐには利点がわかりません。

補遺: これまでの例をありがとう。'O->can(Blah)' のようなものを使用することは、リフレクション ルックアップを実行することと同等であり (おそらく安くはありません)、および/または (O は IBlah) コンパイラーがあなたをチェックすることはできますが、後者には私の IBlah インターフェイスとあなたの IBlah インターフェイスを区別できるという利点がありますが、他の 2 つにはありません。確かに、メソッドごとにたくさんの小さなインターフェースが浮かんでいると面倒になりますが、多くの個々のメソッドをチェックすることもできます...

...だからまた私はそれを得ていません。それは素晴らしい時間の節約になりますか、それとも新品の袋に入った同じ古いものですか? ダックタイピングが必要な例はどこにありますか?

0 投票する
5 に答える
14223 参照

c++ - C++: 派生 + 基本クラスは単一のインターフェイスを実装しますか?

C++ では、基本クラスと派生クラスに単一のインターフェイスを実装させることは可能ですか?

例えば:

Derived はインスタンス化できないため、これは失敗します。コンパイラに関する限り、Interface::BaseFunction は定義されていません。

これまでのところ、私が見つけた唯一の解決策は、Derived でパススルー関数を宣言することです

より良い解決策はありますか?


編集:問題がある場合は、MFC ダイアログを使用して実際に発生した問題を次に示します。

CDialog から派生したダイアログ クラス (MyDialog と言います) があります。依存関係の問題により、抽象インターフェイス (MyDialogInterface) を作成する必要があります。MyDialogInterface を使用するクラスは、MyDialog に固有のメソッドを使用する必要がありますが、CDialog::SetParent を呼び出す必要もあります。MyDialog::SetParent を作成して CDialog::SetParent に渡すことで解決しましたが、もっと良い方法があるかどうか疑問に思っていました。

0 投票する
3 に答える
438 参照

c# - ORM と SQL をレガシー システムと組み合わせる方法についてアドバイスが必要

私たちは、レガシー システムを .NET に移植する作業を進めています。これは、アーキテクチャをクリーンアップするためだけでなく、レガシー システムでは簡単に実現できない多くの新しい可能性を利用するためでもあります。

注: 投稿する前に投稿を読んでいると、所々で説明が少し速すぎた可能性があることに気付きました。詳細については説明しません。不明な点がある場合は、コメントを残してください(回答ではありません)。可能な限り補足します

レガシー システムはデータベースを使用し、100% カスタムで記述された SQL が随所に使用されています。データを必要とするコードはジョブに必要なもののみを取得するため、これによりテーブルが広くなります (つまり、列が多くなります)。

移植の一環として、カスタム SQL に加えて、使用できる ORM レイヤーを導入しました。私たちが選択した ORM は DevExpress XPO であり、この機能の 1 つがいくつかの問題を引き起こしました。つまり、たとえば Employee テーブルの ORM クラスを定義するときに、すべての列のプロパティを追加する必要があるということです。そうしないと、それらを取得できません。

これはまた、従業員を取得すると、少数の列しか必要としない場合でも、すべての列を取得することを意味します。

ORM を使用する利点の 1 つは、プロパティ関連のロジックを同じクラスに配置できることです。たとえば、姓、名、ミドルネームを組み合わせて「表示名」にする簡単な表現は、例としてそこに置くことができます。

ただし、どこかに SQL コードを記述した場合は、DAL のような構造で、またはどこでも、この式を複製する必要があります。これは間違っているように感じられ、バグとメンテナンスの悪夢のレシピのように見えます。

ただし、次の 2 つの選択肢があります。

  • ORM、すべてをフェッチ、一度ロジックを記述可能
  • SQL、必要なものを取得、ロジックを複製する必要がある

次に、代替案を考え出しました。ORM オブジェクトは辞書からコード生成されるため、一連のダム クラスも生成することにしました。これらは同じ数のプロパティを持ちますが、同じ方法で ORM に関連付けられません。さらに、生成されたすべてのオブジェクトにインターフェースを追加し、ORM オブジェクトとダム オブジェクトの両方にこのインターフェースを実装させました。

これにより、このロジックの一部をインターフェイスに関連付けられた拡張メソッドに移動することができました。ダム オブジェクトは、SQL クラスにプラグインするのに十分な情報を持っているため、DataTable を取得する代わりに、利用可能なロジックを使用して List を取得できるため、これは機能しているように見えます。

ただし、これにより別の問題が発生しました。従業員が誰であるか (つまり、システム内の識別子) と名前 (ファースト、ミドル、ラスト) を知る必要があるコンテキストでのみ従業員を表示または処理するコードを書きたい場合、私はこのダム オブジェクトを使用します。私を呼び出すコードが実際にこれらすべてのものを提供していることをコンパイラが保証することはありません。

1 つの解決策は、どのプロパティに値が割り当てられているかをオブジェクトに認識させることです。割り当てられていないプロパティを読み取ろうとすると、例外が発生してクラッシュします。これにより、コードが十分な情報を渡していない場合に、実行時に契約違反を検出する機会が得られます。

これも私たちには不格好に見えます。

だから基本的に私がアドバイスしたいのは、他の誰かがこの状況にあったか、そうであるか、そしてあなたが与えることができるヒントやアドバイスです.

現時点では、テーブルを分割することはできません。レガシ アプリケーションは、ポートのサイズのために何年も存在する必要があり、.NET コードは 3 年以内にリリースされるタイプのプロジェクトではありませんが、途中のリリースで段階的に導入されます。そのため、レガシー システムと .NET コードの両方が同じテーブルを操作する必要があります。

また、これが理想的な解決策ではないことも承知していますので、「このようにするべきではなかった」などのアドバイスはご遠慮ください。私たちはこれをよく知っています:)


私たちが調査したことの 1 つは、"コントラクト" を使用して XML ファイルなどを作成することです。したがって、この XML ファイルに次のようなものを入れることができます。

  • これらの 50 個のプロパティを持つ Employee クラスがあります
  • さらに、プログラムのさまざまな部分に、これらの 7 つのバリエーションがあります。
  • さらに、これらの 10 個のロジックがあり、それぞれがプロパティ X、Y、および Z を必要とします (X、Y、および Z はこれらの 10 の間で異なります)。

これにより、これらの 8 つのクラス (完全なクラス + 7 つの小さなバリエーション) をコード生成し、バリエーション #3 にプロパティ X、Y、および K が存在することをジェネレーターに検出させることができます。ロジックまたはロジックが必要とするインターフェースをこのクラスに自動的に追加します。これにより、さまざまな程度のプロパティ カバレッジを持つさまざまなタイプの従業員クラスを作成し、このクラスでサポートされるすべてのロジックをジェネレーターに自動的に追加させることができます。

私のコードは、タイプ IEmployeeWithAddressAndPhoneNumbers の従業員が必要であると言うことができます。

これもダサく見える。

0 投票する
1 に答える
66 参照

ms-access - Access でモジュールを使用してインターフェイスを構成するにはどうすればよいですか?

Access vba でいくつかのコード モジュールを作成しました。各コードはさまざまな目的で実行され、データベースでさまざまなアクションを実行します。
私はvbaの経験があまりありません。「インターフェイス」または「フォーム」を構築して、ユーザーが実行したい操作を選択し、その特定のコードが実行されることに基づいて選択できるようにすることを計画しています。

これに関する情報を教えてくれるチュートリアルやウェブサイトを教えてもらえますか?

0 投票する
3 に答える
554 参照

c - C -> Rubyインターフェースで変数を返すにはどうすればよいですか?

以前の質問のフォローアップで、ターゲット ライブラリからエラー メッセージを取得しようとしたときに失敗する部分を示しています。

@msg でエラー メッセージが返されることを期待していますが、実行すると次のようになります。

代わりにシンボル (:msg) を使用すると、次のようになります。

明らかに、Ruby と C の間でパラメーターを渡すことについて何かが欠けています。値を返すには、どのような Ruby 変数が必要ですか?