C # - en utilisant des méthodes d'extension pour fournir une implémentation d'interface par défaut

Je suis en train d'apprendre le C# les méthodes d'extension, et je me demandais si je peux utiliser pour fournir une implémentation par défaut d'une interface.

Dire:

public interface Animal {
    string MakeSound();
}

public static string MakeSound(this Animal) {
    return "";
}

Puis

public class Dog : Animal {
    string MakeSound() {
        return "Bark";
    }
}

public class Porcupine : Animal {
}

Et dernier:

Animal dog = new Dog();
Animal porcupine = new Porcupine();

Print(dog.MakeSound());
Print(porcupine.MakeSound());

J'aimerais le porc-épic et tous les autres animaux qui n'ont pas explicitement mis en œuvre MakeSound utiliser l'extension par défaut méthode qui renvoie une chaîne vide, mais le chien et tout animal qui possède une mise en œuvre explicite de retour de sa propre mise en œuvre tels que "l'Écorce".

Donc mes questions:
1. Est-ce faisable?
2. Si non, est-il un autre moyen pour mettre en œuvre le comportement par défaut d'une interface?

Classe abstraite au lieu de l'interface n'est pas une option parce que le C# ne supporte pas l'héritage multiple et de mes classes héritent d'comportement d'une autre classe.

source d'informationauteur tbkn23