Почему это? Я бы нашел это действительно приятно иметь некоторые методы расширения, заблокированные для использования только в одном из моих классов. Не действительно хотите иметь определенные методы расширения, доступные везде ... и они выглядят намного лучше, чем обычные статические методы: 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())
Итак, другими словами, этот метод расширения не будет полезен при всех вне этого класса. Но это сделает код намного чище. Могут, конечно, также делать обычные методы, и это то, что я делал, поскольку это было невозможно.
Aaanyways, мне было просто интересно узнать, есть ли у кого-нибудь хорошие аргументы в пользу того, почему они выбрали такое ограничение, на котором могут быть созданы методы расширения. Должно быть в статическом классе имеет смысл. Не может быть во вложенном статическом классе не ... мне по крайней мере ...
Похоже, что ни один из этих ответов не дает хорошей технической причины, почему это невозможно. –
Как и вы, я предпочитаю синтаксис метода расширения. SomeThing.HasSomeCondition() превосходит HasSomeCondition (SomeThing). – Mir