¿Cómo registrar todos los tipos de una interfaz y obtener una instancia de ellos en la unidad?

¿Cómo puede la unidad obtener todas las instancias de una interfaz y luego acceder a ellas?

Las piezas de código se toman de aquí:Fail-Tracker

En StrcutureMap es posible registrar todos los tipos de una interfaz desde un ensamblaje y luego acceder a ellos de la siguiente manera:

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());

        });

y luego acceder a todos los tipos que implementan esas interfaces como:

        using (var container = ObjectFactory.Container.GetNestedContainer())
        {
            foreach (var task in container.GetAllInstances<IRunAtInit>())
            {
                task.Execute();
            }

            foreach (var task in container.GetAllInstances<IRunAtStartup>())
            {
                task.Execute();
            }
        }

¿Cuál es el equivalente de este código en la unidad?

¿Cómo puedo obtenerlos en Application_BeginRequest como structuremap

public void Application_BeginRequest()
    {
        Container = ObjectFactory.Container.GetNestedContainer();

        foreach (var task in Container.GetAllInstances<IRunOnEachRequest>())
        {
            task.Execute();
        }
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta