2009-04-02 10 views

Respuesta

46

Para los métodos virtuales, puede escribir override y luego un espacio. Intellisense debería ofrecerle una lista de opciones.

Para los métodos abstractos y propiedades, puede utilizar la etiqueta inteligente en la clase base o interfaz (también, Ctrl + . o Shift + Alt + F10 mostrará el menú de etiquetas inteligentes) para generar los elementos concretos.

Por ejemplo, en el siguiente fragmento de código, puede colocar el cursor al final de INotifyPropertyChanged y pulse Ctrl +. a continuación, seleccione Implementar interfaz, y el evento PropertyChanged se añadiría a MyClass:

class MyClass : INotifyPropertyChanged 
{ 
} 
+0

Esto funciona bien para las implementaciones de interfaz. Quiero derivar una clase de otra clase y no hay una manera fácil de hacerlo. – Kangkan

+0

@Kangkan: si la otra clase tiene métodos abstractos, funciona de la misma manera que con las interfaces. sin embargo, si tiene métodos virtuales con implementaciones, solo debe anular las que necesita. No estoy seguro de qué "manera fácil" se está perdiendo, pero simplemente escriba "anular" y un espacio como el anterior y le dará un poco de los métodos disponibles. No debería necesitar anularlos a todos. –

+0

Quiero agregar propiedades y métodos adicionales a mi clase mientras mantengo todos los métodos y atributos de la clase base. Por lo tanto, me gustaría obtener los métodos y propiedades implementados como base.method() way. – Kangkan

4

Para métodos virtuales escriba anule, proporcione un espacio e intellisense le mostrará todos los métodos que se pueden heredar.

22

Simplemente escriba la interfaz que desea implementar y, a continuación, haga clic en la etiqueta inteligente, un menú contextual emergente, y luego puede seleccionar Implementar interfaz o Implementar interfaz explícitamente:

enter image description here

Todos los miembros a ser anulado estará contenida dentro de una región de código que se nombra para reflejar su propósito.

Todos los miembros tendrán una línea que arroja un NotImplementedException.

+1

El OP habla de derivar clase de la clase base y no de implementar interfaces. – Kangkan

1

Como los otros han mencionado, la etiqueta inteligente (a través de Ctrl+. y Alt+Shft+F10) va a resolver su problema, sin embargo Visual Studio tiene una opción molestos, que envolverá automáticamente las propiedades/métodos generados con una región como esta:

#region INotifyPropertyChanged members 
... 
#endregion 

Puede activar esta funcionalidad en Tools > Options > Text Editor > C# > Advanced. Hay una casilla de verificación llamada Implement Interface > Surround generated code with #region. Solo asegúrate de que esté desmarcado.

+1

Creo que la región es agradable, ya que señala los métodos relacionados con la interfaz y también hace que todo el grupo sea colapsable. –

3

No creo que esto exista cuando se formuló la pregunta original, pero al menos a partir de VS 2013, puede crear automáticamente stubs para métodos abstractos & propiedades. Simplemente haga clic derecho en el nombre de la clase abstracta (en su definición de clase) y seleccione "Implementar clase abstracta". Al igual que CMS mostró con interfaces de implementación automática.

+0

CMS hizo clic en la "Etiqueta inteligente", la pequeña caja que aparece debajo de la M en 'MiInterfaz' en su imagen. – Zack

Cuestiones relacionadas