拡張メソッドとしてメソッドを実装するタイミングと、スタンドアロンメソッドとしてメソッドを実装するタイミングを決定するのは少し難しいです。これを決定する際のベストプラクティスは何ですか?拡張メソッドと通常のメソッド - ベストプラクティスのアイデア
19
A
答えて
20
次のいずれかの条件に該当する場合、拡張メソッドを使用します。
- あなたはタイプのメソッドを必要とし、あなたがソースを所有していません。
- タイプにメソッドが必要です。doはソースを所有し、タイプはインターフェイスです。
- あなたはタイプのメソッドを必要とする、あなたははソースを所有しますが、メソッドを追加することは望ましくない結合を作成します。*
そうでない場合は、あなたが実際の型自体に実際のメソッドを使用する必要があります。
ソースを所有しているクラスや構造体の拡張メソッドを作成するのは大変だと思います。なぜ、通常のメソッドで十分な場合に、拡張メソッドで読者を混乱させるのですか?
推奨読書:Framework Design Guidelines: Extension Methods
* あなたがタイプに便利なメソッドを追加したいことを想像しますが、APIの一部であってはならないアセンブリまたはタイプに依存関係を作成する必要はありません。拡張メソッドを使ってこれを管理することができます。
2
Try this Stackoverflow post for a discussion about extension method best practices.
私の観点から、私は特定の種類のユーティリティ機能の多くを持っているとき、私は拡張メソッドを使用します。
私は...
string.ExtensionMethod();
は私が追加することになります...
StringHelper.ExtensionMethod("string to do something with");
+0
しかし、あなたが '' 'ExtensionMethod()' ''を書いた人ではないときは、公式のC#文書で '' '' ExtensionMethod'''を見つけようとしばらく時間を費やして、あなたが間違った場所。 –
関連する問題
- 1. MVC拡張メソッド
- 2. C#:拡張メソッドとNot演算子のベストプラクティス
- 3. Rubyメソッドの拡張
- 4. 拡張メソッドのパートタイムバグ
- 5. スタティックオブジェクトの拡張メソッド
- 6. Dの拡張メソッド?
- 7. ユニットテストの拡張メソッド
- 8. LINQの拡張メソッド
- 9. IsOrderedBy拡張メソッド
- 10. 拡張メソッド - デコレータパターン
- 11. 拡張メソッドは
- 12. ジェネリック拡張メソッド
- 13. 拡張メソッドは
- 14. 拡張メソッド
- 15. LINQの拡張メソッド - GetYearWeekFormat拡張
- 16. 仮想拡張メソッド?
- 17. HttpClientとReadAsAsync ()拡張メソッド
- 18. LINQとCount拡張メソッド
- 19. 拡張メソッドと列挙
- 20. パフォーマンス拡張メソッドとインスタンスメソッド
- 21. 通常のDLLと拡張DLL
- 22. NhQueryable LINQ拡張メソッド?
- 23. 静的拡張メソッド
- 24. Functons、staticメソッドまたは通常のメソッド
- 25. フィールド拡張メソッドのポイント
- 26. HtmlHelper拡張メソッドのHTMLエンコーディング
- 27. C#のF#拡張メソッド
- 28. Pythonビルトイン型の拡張メソッド!
- 29. StartsWithストリームの拡張メソッド
- 30. DLLへの拡張メソッド
もう一つの場合よりもきれいに見えることを見つける:あなたは、ソースが、所有し、種類の方法が必要それ以外の場合には望ましくない結合を生成するであろう。 – JaredPar
@Jared - 良い点 - 私はそれを追加します! –