C# extension de la méthode d'une interface de mise en œuvre

Je me demandais si un C# méthode d'extension d'une classe pourrait agir comme une implémentation de l'interface?
Que dois-je:

Un iterface:

public interface IEventHandler
{
    void Notify(SEvent ev, IEventEmmiter source);
}

Une classe qui l'implémente:

class Sim : IEventHandler
{

    /*public void Notify(SEvent ev, IEventEmmiter source)
    {
        Console.WriteLine("Got notified: " + ev.Name);
    }*/

}

Et une classe qui contient la méthode d'extension:

public static class ReflectiveEventDispatcher
{
    public static void Notify(this IEventHandler handler, SEvent ev)
    {
        if (handler.GetType().GetMethod("Handle" + ev.Name) != null)
        {
            //C# WTF?
            object[] prms = new object[0];
            prms[0] = ev;
            handler.GetType().GetMethod("Handle" + ev.Name).Invoke(handler, prms);
        }
        else
        {
            throw new System.NotImplementedException("This object doesn't have appropriate handler methods for event " + ev.Name);
        }
    }
}

Maintenant, je veux avoir différentes classes avec IEventHandler interface et les interfaces de mise en œuvre doit être réalisée par la méthode d'extension.

Si ce n'est pas possible, est-il possible de définir le Notifier explicitement et puis juste avant l'appel à la méthode d'extension?

Le code ci-dessus est essentiellement un héritage multiple hack. Est-il possible d'émuler ce comportement par un (autre) cela signifie?

(J'espère que cela a un sens, je suis habitué à Ruby et ce qui me donne du fil à retordre. Oh, comment puis-je m'ennuie de vous, mes chers mixin...)

Mise à jour

Renvoi d'appel résolu assez bien:

public void Notify(SEvent ev)
{
    ReflectiveEventDispatcher.Notify(this, ev,);
}
  • Vous pouvez même le faire: ce.Notify(ev);
InformationsquelleAutor PJK | 2011-01-28