有人知道我做错了什么吗?
我有一个这样的静态类:
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.");
}
}
在我的 MVC 应用程序的 Global.asax.cs 中,我有:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ApplicationContainer.Create();
RegisterRoutes(RouteTable.Routes);
}
现在问题来了:我如何从容器中解析命名实例?
public class DefaultLogger : ILogger
{
ApplicationContainer.Container().Resolve("Log", typeof(Repository<Log>);// <--- does not work
}
但是当 ApplicationContainer 类不是静态的时,从容器中解析非常好。 我使用 autofac 2.2.4。
最佳答案
我相信您无法编译此代码,因为您缺少 .Resolve(...)
调用的结束符“)”。
就是说,你看过 Autofac ASP.Net integration 了吗?模块?
关于c# - 如何从静态类中解析命名实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3369684/