問題タブ [explicit-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 に答える
161 参照

c# - new-keyword を使用して 2 つのインターフェースのメソッドを結合する

2 つのインターフェイス A、B があります (異なるコンポーネントに存在します)。どちらも同じシグネチャ ( MyMethod) でメソッドを宣言します。2 つのインターフェイスは、3 番目のインターフェイス (C) によって継承されます。

最初の 2 つのインターフェイス (A、B) で宣言されているメソッドは、(A と B に対して) 常に同じ値を返すことを意図しているため、C から派生するときにインターフェイスを明示的に実装したくありません。
これを達成します。 new-keyword を使用しながら、3 番目のインターフェイスでもメソッドを宣言します。

これで予想される問題はありますか、それともスタイルが悪いのでしょうか?

更新
申し訳ありませんが、私の最初の質問は完全なストーリーを示していません。C のインターフェイス参照で MyMethod を呼び出そうとすると、問題が発生します。コンパイラはこれをコンパイルしません。

完全な例

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

c# - C# インターフェイスの明示的な実装により、INotifyPropertyChanged が壊れる

これは少しばかげた質問かもしれませんが、次の問題に対する回避策や解決策を見つけることができませんでした...

コードからわかるように、INotifyPropertyChanged から実装するクラス Example と、1 つのプロパティ A を持つ IExample インターフェイスがあります。

Explicit インターフェイスの実装を使用しているため、 IExample インターフェイスを介してAを参照する必要があります。

そして、それが私の問題です。AIExamle から来ているため、値が変更されたときに明示的にINotifyPropertyChanged発生しません...

これは理にかなっています。

明示的なインターフェイスの実装と INotifyPropertyChanged を維持し、それでも仕事を成し遂げる方法についての考え/アイデアはありますか?

なぜ私がExplicit インターフェイスの実装に夢中になっているのかと疑問に思われるかもしれません

ところで、 INotifyPropertyChanged 実装を自由に批判してください。これは、明示的な継承を処理できるようにするための方法です。

よろしくお願いします。

[編集] 「明示的な継承と明示的なインターフェイスの実装」を変更 - ダニエルのように修正、暗黙の継承コードを追加。明らかに、継承の1つをコメントアウトする必要があります...

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

compilation - Fortran - 明示的インターフェース

私は Fortran に非常に慣れていません。私の研究では、モデルのモンスターを実行する必要があるため、作業を進めながら学習しています。なので、「バカみたい」な質問ですみません。コンパイルしようとしています (Mac OSX、コマンド ラインから)。すでにいくつかのことを解決できましたが、修正方法がわからない問題に遭遇しました。エラーの背後にあるアイデアは理解できたと思いますが、修正方法がわかりません。

モデルは巨大なので、関連性があると思われるコード セクションのみを投稿します (間違っている可能性もあります)。次で始まるいくつかのサブルーチンを含むファイルがあります。

次の行に沿ってエラーメッセージが表示されます

Budget_utils.f90:20.54:

real , external :: compute_co2_storage 1
エラー: (1) のプロシージャ 'compute_co2_storage' のダミー引数 'csite' には、このプロシージャの明示的なインターフェイスを必要とする属性があります

(私はそれらをたくさん手に入れましたが、本質的にはすべて同じです)。さて、ed_state_vars.f90 (サブルーチンで「使用」されている) を見ると、

などなど - これは、さらに 500 行ほどになります。要するに、元のサブルーチンは、(ダミーの) 引数 csite を使用できるようにするために、そのプロシージャ用の明示的なインターフェイスが必要なようです。繰り返しますが、私は Fortran を初めて使用しますが、Fortran がどのように「考える」かを本当に理解しようとしています。明示的なインターフェイスを持つことの意味、いつ (そしてどのように!) 使用するかなどを検索してきましたが、私の場合にどのように適用されるかわかりません。別のコンパイラ (Intel?) を使用する必要があるかもしれません。ヒントはありますか?

編集:すべてのプロシージャでcsitea が宣言され、宣言からで指定されているように、一連の sが含まれています。しかし、すべての手順で別のモジュール ( ) から適切にd されています。だから、なぜ明示的なインターフェースエラーが発生するのか、まだ混乱していますか?targettype(site type)pointersitetypesitetypeuseed_state_vars.f90

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

aop - PostSharp 属性マルチキャストで明示的なインターフェイス メソッドを除外する

私がインターフェースを持っているとしましょう:

これは、いくつかのクラスによって実装されています。

PostSharp 属性マルチキャストを使用して、アスペクト ( MySecurityAspect) を名前空間内の各クラスに適用しています。

ただし、明示的なインターフェイス メソッドの実装を除外する方法がわかりません。

このステートメントを使用して、こちらのドキュメントに従ってみました:

しかし、これはうまくいかないようです。

明示的なインターフェイスの実装である場合、属性マルチキャストを使用するメソッドを除外するにはどうすればよいですか?

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

c# - 明示的に実装されたインターフェイス プロパティと wpf 可視性を適切に使用するにはどうすればよいですか?

次のような状況があります。

いくつかの ViewModel オブジェクトがあり、そのうちのいくつかは interface を実装していますが、実装しISomeInterfaceていないものもあります。SomeEnumerationインターフェイスは、 ( )と呼ばれるプロパティを公開しますIEnumerable<T>

例えば:

私の XAML は、これまでのところ、両方の ViewModel がたまたまバインド対象のプロパティ ( 、 など) を持つように設計されていPropertyAますPropertyB。私がバインドしているプロパティが、DataContext. しかし、今は...そして、明示的に実装されているプロパティに反対します(それがWPFバインディングエンジンに違いをもたらすかどうかはわかりません)。

基本的に、私の xaml は次のようになります。

次の理由により、これが機能するかどうかはわかりません。

  1. すべてDataContextにプロパティが含まれているわけではありません (含まれていない場合は、非表示にする必要があります) ... この場合はどうすればよいですか?
  2. プロパティを含む sについては、DataContext明示的に実装されています...最初にキャストする必要がありますか?
0 投票する
2 に答える
273 参照

c# - 明示的なインターフェイス実装メンバーを取得できません

Roslyn を使用して C# コードを分析していますが、明示的に実装されたインターフェイスをいじっているときに問題が発生しました。インターフェイスを実装する型を指定すると、明示的に実装されたメンバーを名前で取得できません。例えば:

これは、型が名前空間内に存在する場合にのみ発生するようです。次のコードは正常に機能します。

なぜこれが起こっているのか誰にも分かりますか?明示的に実装されたインターフェイスを操作するより良い方法はありますか?

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

c# - すべてのインターフェースが明示的に実装されていますか? (IoCが関与)

そのような質問がおそらくすでに投稿されているという事実を私はよく知っています。しかし、このケースでの IoC の関与と多くのコードにより、私が新しい会社で同僚に会ったことで、この疑問が生じました。

シナリオ:

ある製品のコードベースでは、この同僚が作成したすべてのインターフェースが明示的に実装されています。アプリケーション全体は構造マップを介して構築されますが、いくつかの場所では具象型が使用され、このようにキャストされます

バックグラウンド:

その同僚は、すべてのインターフェイスを明示的に実装することについて尋ねた後、最近 StructureMap を導入しましたが、多くの人はまだ具象型を使用していると説明してくれました。つまり、本質的には、社内の人々を「教育する」ための手段です。

問題に関する私のセント:

まず第一に、StructureMap への切り替えは数年前に行われました。これは一種のインターフェイスをより多く使用することを強制しますが、私の意見では、これは正しい方法ではありません。私の見方では、具象型について知っている人は実装を見て、上で示したものに簡単にアクセスできます...キャストするだけです。明確なコミュニケーションまたはコーディング規則により、これははるかに改善されます。IoC が使用され、具体的なクラスがない場合、インターフェイスを明示的に実装してもまったく役に立ちません。

また、これが継承を台無しにする可能性があると聞いたことがありますが、例はわかりません。また、 Jon Skeetが上記の方法ではなく、IEnumerable<> やその他の名前の衝突のように意図された方法で使用することを思いとどまらせているのを見てきました。

誰かが私のためにこの問題に光を当てることができますか. 長所と短所 (ただし、私はそれをしないことに非常に偏っていますが、ここに投稿します)、特に理由はどちらか一方です。

ありがとう!

編集:これが正しいか間違っているかの問題ではなく、本当の答えがないこともよく知っています。これは、各アプローチの欠点を知るために学ぶべき問題です。あるシナリオで一方のアプローチを他方のアプローチよりも使用するのはなぜですか?