これはなぜですか?私はそれを見つけるだろう本当にいくつかの拡張メソッドを私のクラスのうちで使用されるようにロックダウンすることができてうれしい。本当にどこでも利用できる特定の拡張メソッドを持つようにしたい...と、彼らはそう、通常の静的メソッドよりもはるかに良く見てはいけない:Pネストされた静的クラスでは拡張メソッドは使用できません。
明確にするため:
私はこれらの拡張メソッドをしたい理由があるためであります私はそれにDataGridViewを持っているフォームを拡張しています。そして、私はこれらのような行の非常に疲れています:
foreach(var row in grid.Rows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
foreach(var row in grid.SelectedRows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
は、私はちょうど、他の言葉で
foreach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
そうすることができるように拡張メソッドをご希望、この拡張メソッドは全く有用ではありませんこのクラス外。しかし、それはコードをもっときれいにするでしょう。もちろん、定期的な方法を作ることもできますが、これはできませんでした。
私は、拡張メソッドを使用できる場所にこのような制限を設ける理由を知っている人がいるかどうかを知りたいと思っていました。 静的なクラスでなければならないは完全に意味があります。 ネストされた静的クラスに入れられない少なくとも...
これらの回答のどれも、なぜそれができないのかという優れた技術的理由がないようです。 –
あなたのように、私は拡張メソッドの構文を好む。 SomeThing.HasSomeCondition()はHasSomeCondition(SomeThing)よりも優れています。 – Mir