[解決済み] 拡張メソッドはインターフェースに適用できますか?
2022-04-30 05:16:02
質問
インターフェースに拡張メソッドを適用することは可能ですか? (C#の質問)
それは、例えば次のようなことを実現するためです。
-
ITopology インターフェイスを作成する
-
このインターフェイスの拡張メソッドを作成します (例 public static int CountNodes(this ITopology topologyIf) )
-
を実装したクラス(例:MyGraph)を作成すると、自動的にCount Nodesエクステンションを持つことになる。
こうすることで、インターフェースを実装するクラスは、拡張メソッドで定義されたものと一致するようにクラス名を設定する必要がなくなります。
解決方法は?
もちろん可能です。Linqのほとんどはインターフェース拡張メソッドを中心に構築されています。
インターフェイスはそれ自身の機能を実装できないので、拡張メソッドは実際のコードをインターフェイス定義に関連付ける最も簡単な方法なのです。
をご覧ください。
列挙可能
を中心に構築された拡張メソッドの全コレクションが、このクラスに含まれています。
IEnumerable<T>
. 一つを実装するには、クラスに対して一つを実装するのと同じです。
public static class TopologyExtensions
{
public static void CountNodes(this ITopology topology)
{
// ...
}
}
インターフェースに関する限り、拡張メソッドには特に変わったところはありません。拡張メソッドは、静的なメソッドにコンパイラが構文上の工夫をして、そのメソッドがターゲット型の一部であるかのように見せているだけなのです。
関連
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み] 匿名クラスはインターフェースを実装できますか?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】「インターフェースに合わせたプログラム」とはどういう意味ですか?
-
[解決済み】C#には拡張プロパティがある?
-
[解決済み】インターフェイス - ポイントは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない