Wie Einheit kann alle Instanzen einer Schnittstelle erhalten und dann auf sie zugreifen?Wie registriert man alle Arten einer Schnittstelle und bekommt eine Instanz von ihnen in Einheit?
-Code Stücke werden von hier genommen: Fail-Tracker
In StrcutureMap seine möglich, alle Arten von einer Schnittstelle aus einer Assembly zu registrieren und sie dann Zugriff wie folgt vor:
public class TaskRegistry : Registry
{
public TaskRegistry()
{
Scan(scan =>
{
scan.AssembliesFromApplicationBaseDirectory(
a => a.FullName.StartsWith("FailTracker"));
scan.AddAllTypesOf<IRunAtInit>();
scan.AddAllTypesOf<IRunAtStartup>();
scan.AddAllTypesOf<IRunOnEachRequest>();
scan.AddAllTypesOf<IRunOnError>();
scan.AddAllTypesOf<IRunAfterEachRequest>();
});
}
}
ObjectFactory.Configure(cfg =>
{
cfg.AddRegistry(new TaskRegistry());
});
und dann alle Arten zugreifen Umsetzung diese Schnittstellen wie:
using (var container = ObjectFactory.Container.GetNestedContainer())
{
foreach (var task in container.GetAllInstances<IRunAtInit>())
{
task.Execute();
}
foreach (var task in container.GetAllInstances<IRunAtStartup>())
{
task.Execute();
}
}
Was ist das Äquivalent dieses Codes in Einheit?
Wie kann ich diese bei Application_BeginRequest wie StructureMap bekommen
public void Application_BeginRequest()
{
Container = ObjectFactory.Container.GetNestedContainer();
foreach (var task in Container.GetAllInstances<IRunOnEachRequest>())
{
task.Execute();
}
}