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