by Oliver
27. October 2010 19:42
Soeben las ich einen sehr interessanten Blog-Post von Ayende Rahien, in dem er Pluggability mittels MEF erwähnt. Scott Hanselman schreibt über MEF: “MEF is effectively a Dating Service for Components.”, also für mich eine Art von Dependency Injection und wahrscheinlich noch viel mehr.
Spannend für mich im o.g. Post von Ayende war das Konzept eines StartupTasks, den er einfach durch Implementierung eines Interfaces, IStartupTask, definiert, und den dann MEF für ihn verwaltet.
Wir nutzen ja Autofac für den Dependency Injection-Teil und mir kam die Idee, das Gleiche mit Autofac umzusetzen:
1: public class Global : HttpApplication, IContainerProviderAccessor
2: {
3: protected void Application_Start(object sender, EventArgs e)
4: {
5: var container = ...
6:
7: container
8: .ResolveAllImplementationsOf<IStartupTask>() // fake name :-)
9: .Select(task => task.Execute(...));
10: }
11: }
Zugegebenermaßen kenn ich die richtige Syntax jetzt gerade nicht, aber es geht mir eher um die Idee. Wahrscheinlich kann man mit Hilfe von Autofac den StartupTasks auch Parameter mitgeben, ohne sie an dieser Stelle explizit anzugeben…
Mir gefällt’s.
Happy Coding,
Oliver