問題タブ [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 投票する
4 に答える
3381 参照

c# - C# - 継承のある明示的なインターフェイス?

出力:
B->こんにちは! 明示的から。

そうではありませんか?
A→こんにちは!明示的から。

明示的なキャスト (IHello) がクラス A から IHello.Hello() を呼び出さないのはなぜですか?

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

.net - 明示的に実装されたMethodInfoオブジェクトによって参照されているインターフェイスを特定するにはどうすればよいですか?

MethodInfo次のように、明示的に実装されたインターフェイスメソッドを表すオブジェクトがあります。

MethodInfoこのオブジェクトをクエリして、実装するインターフェイスタイプ(Typeオブジェクトを表す)を取得するにはどうすればよいSystem.Collections.IEnumerableですか?このInterfaceMapping構造は逆の操作を提供し、特定のインターフェイスを実装するタイプのオブジェクトを取得するMethodInfoため、機能しません。

この情報のメソッド名を明確に解析できるため、これは不自然な例であることに注意してください。できればこれは避けたいと思います。

0 投票する
4 に答える
3463 参照

c# - 派生クラスで使用できない C# プロパティ

何が起こっているのかわかりません。次の基本クラスがあります。

そして、私はこの派生クラスを持っています:

なぜそのエラーが発生するのですか? 「'MyNamespace.MyRow' には 'Keys' の定義が含まれていません」. どちらのクラスもMyNamespace名前空間にあります。this.Keys内からandにアクセスしようとbase.Keysしましたが、どちらも機能しませんMySubRowKeysプロパティをpublicinとしてマークしようとしましMyRowたが、「修飾子 'public' はこのアイテムには無効です」というエラーが表示されました。これは、インターフェイスを実装する必要があるためだと思います。

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

c# - 明示的に実装されたインターフェイスとジェネリック制約

実際のコンパイル済みコード (CallHidden1 と CallHidden2) に違いはありますか? where T : Foo と where T : Foo, IBar (Foo が IBar を実装している場合) の間に、明示的に実装されたインターフェイスメンバーにアクセスする際の他の違いはありますか?

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

c# - C#の明示的なインターフェイスを備えたオブジェクト初期化子

C#で明示的なインターフェイス実装を使用してオブジェクト初期化子を使用するにはどうすればよいですか?

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

c# - Rhino Mocks を使用してインターフェイスを明示的に実装するメソッドをスタブアウトする

Rhino Mocks を使用してインターフェイスを明示的に実装するメソッドをスタブ化するにはどうすればよいですか?

私が理解しているように、Rhino Mocks ではスタブ化されたメソッドが仮想である必要があり、明示的に実装されたインターフェイス メンバーは仮想ではありません。

0 投票する
4 に答える
2480 参照

c# - クラスが暗黙的にではなく明示的にIDisposableを実装するのはなぜですか?

FtpWebResponseクラスを使用していましたが、Disposeメソッドが表示されませんでした。 クラスはIDisposableを実装していることがわかりましたが、明示的に実装しているため、Disposeを呼び出す前にまずインスタンスをIDisposableにキャストする必要があります。

このようなクラスの設計者がIDisposableを明示的に実装することを選択するのはなぜですか?Anthony Pegramが言うように、この方法で行うことは、クラスを使用するたびにドキュメントを参照していない平均的な開発者のためにオブジェクトを破棄する必要があるという事実を覆い隠します。

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

.net - 明示的なインターフェイスの実装は IL でどのように実装されていますか?

IL での明示的なインターフェイスの実装を見てきました。Method次のクラスのメソッド(インターフェイスIAにはシングルMethod()があります):

次の IL メソッド シグネチャにコンパイルされます。

私の質問は、なぜメソッド名IA.Method()が単なるストレートではなくIL なのMethodですか? これは実際には何を意味し、見逃しているとなぜ機能しないのでしょうか? ECMA仕様やグーグルで何も見つかりません。

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

c# - 明示的なインターフェイス実装の制限

私には非常に単純なシナリオがあります。「人」は会社の​​「顧客」または「従業員」になることができます。

人」は「電話」方式で電話でかけることができます。

新製品の発表や組織変更の発表など、通話のコンテキストで「」が果たす役割に応じて、「顧客」の役割に提供された電話番号または提供された電話番号のいずれかを使用する必要があります。 「従業員」の役割。

これが状況の要約です:

しかし、このコードはコンパイルされず、エラーが発生します:

このシナリオは、C#で別の方法で実装できる可能性がありますか、それとも別のデザインを見つける必要がありますか?

もしそうなら、あなたはどのような選択肢を提案しますか?

よろしくお願いします。

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

c# - どのようにリストAdd(object value)を実装していませんか?

私はそれがかなり愚かであると信じています、そして私はこの種の質問をするのに少し恥ずかしいです、しかし私はまだ答えを見つけることができませんでした:

私は、実装するクラスを見ていList<T>ますIList

Ilistに含まれるメソッドの1つは

List<T>私はそれがその方法(型安全性...)を明らかにすべきではないことを理解しています、そしてそれは実際にはそうではありません。しかし、どうしてそれができるのでしょうか?mustntクラスはインターフェース全体を実装しますか?