我正在将Autofac与MVC4一起使用,但不知何故,当尝试解决它时失败了。我在注册过程中没有收到任何错误。代码如下所示:
public void Register()
{
List<Assembly> assemblies = new List<Assembly>();
assemblies.Add(Assembly.Load("KidsWear.DataLayer"));
assemblies.Add(Assembly.Load("KidsWear.Repositories"));
assemblies.Add(Assembly.Load("KidsWear.Contexts"));
assemblies.Add(Assembly.Load("KidsWear.Entities"));
assemblies.Add(Assembly.GetExecutingAssembly());
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(assemblies.ToArray()).AsImplementedInterfaces();
builder.RegisterControllers();
//builder.RegisterControllers(Assembly.GetExecutingAssembly());
var container = builder.Build();
// test -> isRegistered returns fals
var isRegistered = container.IsRegistered(typeof(IProductRepository));
// This line raises error: The requested service //KidsWear.Repositories.IProductRepository' has not been registered.
var concrete = container.Resolve<IProductRepository>();
// End test
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
我所有的接口都在"KidsWear.Repository"中,实际的实现在"KidsWear.DataLayer"中,"KidsWear.Contexts"有通用存储库和上下文。产品存储库界面如下所示:
public interface IProductRepository : IGenericRepository<Product>
{
}
产品存储库继承自 GenericRepository 和 IProductRepository,如下所示:
public class ProductRepository : GenericRepository<Product>, IProductRepository
{
public ProductRepository()
{
}
//Todo: add any extra subs specific to Product
}
谁能告诉我为什么这个注册不起作用以及这个错误是什么?只是在调试模式下,如果我将鼠标悬停在容器上,我可以看到它已被初始化。
非常感谢
这个确切的代码工作得很好。实际上不确定问题是什么。不确定Visual Studio是否需要重新启动或Autofac播放不佳!!