Warum ist das? Ich würde es finden wirklich nice in der Lage sein, einige Extension-Methoden gesperrt zu haben, nur in einer meiner Klassen verwendet werden. überall verfügbar nicht wirklich will, bestimmte Erweiterungsmethoden haben ... und sie sehen so viel schöner als regelmäßige statische Methoden: PErweiterungsmethoden in verschachtelten statischen Klassen nicht erlaubt?
Zur Klarstellung:
Der Grund, warum ich diese Erweiterungsmethoden will, weil Ich erweitere ein Formular mit einem DataGridView. Und ich bin immer sehr müde von Zeilen wie diese:
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))
Würde eine Erweiterungsmethode mag, so dass ich nur
tun konnteforeach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
Also mit anderen Worten, würde diese Erweiterung Methode überhaupt nicht sinnvoll sein, außerhalb dieser Klasse. Aber es würde den Code viel sauberer machen. Natürlich können auch normale Methoden gemacht werden, und das habe ich getan, weil das nicht möglich war.
Aaanyways, ich war nur neugierig zu wissen, ob jemand einige gute Argumente hatte, warum sie sich entschieden hatten, eine Einschränkung wie diese aufzusetzen, wo Erweiterungsmethoden verwendet werden können. Muss in einer statischen Klasse sein macht insgesamt Sinn. Kann nicht in einer verschachtelten statischen Klasse sein nicht ... für mich mindestens ...
Sieht aus wie keine dieser Antworten geben einen guten technischen Grund, warum es nicht möglich ist. –
Wie Sie, bevorzuge ich die Syntax der Erweiterungsmethode. SomeThing.HasSomeCondition() ist HasSomeCondition (SomeThing) überlegen. – Mir