Nicht so kompliziert denken und einfach Instanzmethoden daraus machen
? Ich sehe da keinen Nachteil - und wie gesagt können sich dadurch sogar ganz andere Möglichkeiten eröffnen
:
Code:
class Dispatcher
{
[ImportMany]
IEnumerable<ServerEvent> EventHandlers { get; set; }
public Dispatcher()
{
// Here be MEF magic...
var catalog = new DirectoryCatalog(@".\");
var container = new CompositionContainer(catalog);
container.Composeparts(this);
}
void Receive()
{
ServerEvent handler = EventHandlers.First(h => h.Command == command);
handler.Handle();
}
}
public abstract class ServerEvent
{
public virtual string Command { get { return ""; } }
public void
Handle();
}
[Export(ServerEvent)]
class IAmATeapotServerEvent : ServerEvent { ... }
Wirf eine weitere Assembly mit einer ServerEvent-Ableitung in den bin-Ordner und MEF wird sie ohne weiteres Zutun ebenfalls dem Dispatcher zuordnen. Und jetzt sag mir, dass das mit statischen virtuellen Methoden eleganter lösbar sei
.