Perché è questo? Lo troverei davvero bello poter avere alcuni metodi di estensione bloccati per essere utilizzati solo all'interno di una delle mie classi. Non vuole veramente avere certi metodi di estensione disponibili in tutto il mondo ... e sembrano quindi molto di più rispetto ai metodi statici regolari: PI metodi di estensione non sono consentiti nelle classi statiche nidificate?
Per chiarimenti:
Il motivo che voglio questi metodi di estensione è perché Sto estendendo un modulo, che ha un DataGridView su di esso. E io sono sempre molto stanco di linee come questi:
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))
si augura un metodo di estensione in modo che ho potuto solo fare
foreach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
Quindi, in altre parole, questo metodo di estensione non sarebbe utile a tutti fuori da questa classe. Ma renderebbe il codice molto più pulito. Ovviamente è possibile anche fare dei metodi regolari, ed è quello che ho finito, dato che non era possibile.
Aaanyways, ero solo curioso di sapere se qualcuno avesse dei buoni argomenti sul perché avevano scelto di mettere una restrizione come questa su dove i metodi di estensione possono essere creati. Deve essere in una classe statica ha senso. non può essere in una classe statica nidificata non ... per me almeno ...
Sembra che nessuna di queste risposte fornisca una buona motivazione tecnica per cui non può essere eseguita. –
Come te, preferisco di gran lunga la sintassi del metodo di estensione. SomeThing.HasSomeCondition() è superiore a HasSomeCondition (SomeThing). – Mir