L'accès ou obtenir de l'Autofac Conteneur à l'intérieur d'une classe statique

J'ai besoin d'obtenir ou de l'accès à mon conteneur IoC dans une classe statique. C'est mon (simplifié) scénario:

- Je enregistrer des dépendances pour les ASP .net Api Web dans une start-up de la classe (mais aussi je le fais pour le MVC ou WCF. J'ai un DependecyResolver projet, mais pour des raisons de simplicité, considérons le code suivant)

//Web Api project - Startup.cs
public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    var builder = new ContainerBuilder();

    //... Omited for clarity
    builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
        .AsClosedTypesOf(typeof(IHandle<>))
        .AsImplementedInterfaces();

    //...
    IContainer container = builder.Build();
    config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
    //...
}

Puis, dans une catégorie distincte de la bibliothèque, j'ai ma classe statique (encore simplifié pour plus de clarté):

public static class DomainEvents
{
    private static IContainer Container { get; set; }

    static DomainEvents()
    {
        //Container = I need get my Autofac container here
    }

    public static void Register<T>(Action<T> callback) where T : IDomainEvent { /* ... */ }

    public static void ClearCallbacks() { /* ... */  }

    public static void Raise<T>(T args) where T : IDomainEvent
    {
        foreach (var handler in Container.Resolve<IEnumerable<IHandle<T>>>())
        {
            handler.Handle(args);
        }
        //...
    }
}

Une idée de comment puis-je l'obtenir?

OriginalL'auteur Jose Alonso Monge | 2015-11-27