En C #, ¿puede una clase heredar de otra clase y una interfaz?

Quiero saber si una clase puede heredar de una clase y una interfaz. El código de ejemplo a continuación no funciona pero creo que transmite lo que quiero hacer. La razón por la que quiero hacer esto es porque en mi empresa hacemos dispositivos USB, serie, Ethernet, etc. Estoy tratando de desarrollar un componente / interfaz genérico que pueda usar para escribir programas para todos nuestros dispositivos que ayuden a mantener las cosas comunes (como conectar, desconectar, obtener firmware) lo mismo para todas nuestras aplicaciones.

Para agregar a esta pregunta: si GenericDevice está en un proyecto diferente, ¿puedo poner la interfaz IOurDevices en ese proyecto y luego hacer que la clase USBDevice implemente la interfaz si agrego una referencia al primer proyecto? Porque me gustaría solo hacer referencia a un proyecto y luego implementar diferentes interfaces dependiendo de lo que sea el dispositivo.

class GenericDevice
{
   private string _connectionState;
   public connectionState
   {
      get{return _connectionState; }
      set{ _connectionState = value;}
   }
}

interface IOurDevices
{
   void connectToDevice();
   void DisconnectDevice();
   void GetFirmwareVersion();
}

class USBDevice : IOurDevices : GenericDevice
{
   //here I would define the methods in the interface
   //like this...
   void connectToDevice()
   {
       connectionState = "connected";
   }
}

//so that in my main program I can do this...

class myProgram
{
   main()
   {
      USBDevice myUSB = new USBDevice();
      myUSB.ConnectToDevice;
   }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta