Una interfaz define un contrato. Cualquier class o struct que implemente ese contrato debe proporcionar una implementación de los miembros definidos en la interfaz. A partir de C# 8.0, una interfaz puede definir una implementación predeterminada de miembros. También puede definir miembros static para proporcionar una única implementación de funcionalidad común.
https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/interface
https://geeks.ms/etomas/2010/07/07/c-bsico-interfaces/
https://www.tutorialsteacher.com/csharp/csharp-interface