Использование WebAPI и интерфейсов для моего Repos, AutoFac, похоже, пытается создать экземпляр моего UserRepoitory
, но когда он пытается создать экземпляры, он застревает в своих конструкторах.AutoFac и разрешающие объекты по цепочке
None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on
type 'Db.UserRepository' can be invoked with the available services
and parameters: Cannot resolve parameter 'Db.DbContext context' of constructor 'Void .ctor(Db.DbContext)'.
public class UserRepository : IUserRepository
{
DbContext db = null;
public UserRepository(DbContext context)
{
db = context;
}
}
public class FindABriefContext : DbContext
{
public FindABriefContext() : base("FindABriefContext")
{}
}
Ничего особенного в моей DI код ..
public static void RegisterContainer()
{
var builder = new ContainerBuilder();
builder.RegisterApiControllers(typeof(UserController).Assembly);
//var asm = typeof(IUserRepository).Assembly;
builder.RegisterAssemblyTypes(typeof(UserRepository).Assembly)
.Where(x => x.Name.EndsWith("Repository")).AsImplementedInterfaces();
var container = builder.Build();
GlobalConfiguration.Configuration.DependencyResolver= new AutofacWebApiDependencyResolver(container);
}
Factory Pattern работает для меня - я дам, что выстрел ... и доложить. –
Infact - думая об этом, он не работает для меня, я не использую общие репозитории - я вернусь в Unity. –
Есть еще возможность использовать первую часть ответа «.WithParameter» и передать свой контекст в репозитории. Так же, как у вас есть, теперь добавьте его до конца: .AsImplementedInterfaces(). WithParameter (... –