Gibt es eine Abkürzung in C# (VS 2008), um automatisch die virtuellen und abstrakten Basisklassenmethoden in einer abgeleiteten Klasse zu implementieren?
Antworten
Zu viele Anzeigen?Für virtuelle Methoden können Sie Folgendes eingeben override
und dann ein Leerzeichen. Intellisense sollte Ihnen eine Liste von Optionen anbieten.
Für abstrakte Methoden und Eigenschaften können Sie das Smarttag in der Basisklasse oder Schnittstelle verwenden (auch, Ctrl + . o Shift + Alt + F10 wird das Smarttag-Menü angezeigt), um die konkreten Elemente zu erzeugen.
Im folgenden Codeschnipsel könnten Sie zum Beispiel das Caret am Ende von INotifyPropertyChanged
und drücken Sie Ctrl + . und wählen Sie dann Schnittstelle implementieren und die Option PropertyChanged
Ereignis würde hinzugefügt werden zu MyClass
:
class MyClass : INotifyPropertyChanged
{
}
Geben Sie einfach die Schnittstelle ein, die Sie implementieren möchten, und klicken Sie dann auf das Smart Tag. Es öffnet sich ein Kontextmenü, in dem Sie entweder Schnittstelle implementieren oder Schnittstelle explizit implementieren auswählen können:
Alle zu überschreibenden Elemente werden in einem Codebereich enthalten sein, der entsprechend seinem Zweck benannt wird.
Alle Mitglieder werden eine Zeile haben, die eine NotImplementedException
.
Wie bereits erwähnt, ist das Smarttag (über Ctrl+.
y Alt+Shft+F10
) wird Ihr Problem lösen, aber Visual Studio hat eine lästige Option, die automatisch die generierten Eigenschaften/Methoden mit einer Region wie diese umhüllen wird:
#region INotifyPropertyChanged members
...
#endregion
Sie können diese Funktion aktivieren, indem Sie zu Tools > Options > Text Editor > C# > Advanced
. Es gibt ein Kontrollkästchen namens Implement Interface > Surround generated code with #region
. Vergewissern Sie sich nur, dass es nicht markiert ist.
Ich glaube nicht, dass dies existierte, als die ursprüngliche Frage gestellt wurde, aber zumindest ab VS 2013, können Sie automatisch Stubs für abstrakte Methoden und Eigenschaften erstellen. Klicken Sie einfach mit der rechten Maustaste auf den Namen der abstrakten Klasse (in Ihrer Klassendefinition) und wählen Sie "Abstrakte Klasse implementieren". Genau wie CMS zeigte mit automatisch implementieren Schnittstellen.
- See previous answers
- Weitere Antworten anzeigen