Est-ce que quelqu'un a une idée de ce que je fais de mal?Comment résoudre une instance nommée à partir d'une classe statique?
J'ai une telle classe statique:
public static class ApplicationContainer
{
private static ContainerBuilder builder = null;
private static IContainer container = null;
public static void Create()
{
builder = new ContainerBuilder();
builder.RegisterInstance(new Repository<Log>(RepositoryType.Main))
.As<IRepository<Log>>().SingleInstance()
.Named("Log", typeof(Repository<Log>));
container = builder.Build();
}
public static IContainer Container()
{
if (container != null) return container;
throw new Exception("Container is not ready.");
}
}
Dans Global.asax.cs de mon application MVC j'ai:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ApplicationContainer.Create();
RegisterRoutes(RouteTable.Routes);
}
Et maintenant sur problème: comment puis-je résoudre instance nommée à partir d'un conteneur? Mais lorsque la classe ApplicationContainer n'est pas statique, la résolution du conteneur fonctionne très bien. J'utilise autofac 2.2.4.
Oui, j'ai une bonne idée de ce que vous faites mal: Vous utilisez un localisateur de service statique: http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx Ne faites pas ça . –
Cela dit, cependant, * comment * ça ne marche pas? Est-ce qu'il lance une exception? Laquelle? Le "conteneur n'est pas prêt." Exception? –
Vous aurez certainement besoin de publier l'exception afin d'obtenir une réponse précise à cette question. –