【发布时间】:2018-03-31 06:21:30
【问题描述】:
我有以下 autofac-config:
public static void RegisterDI()
{
var builder = GetBuilder();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
public static ContainerBuilder GetBuilder()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetCallingAssembly());
builder.RegisterFilterProvider();
var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(x => x.FullName.Contains("Soundyladder")).ToArray();
builder.RegisterAssemblyTypes(assemblies)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces()
.InstancePerRequest();
builder.RegisterAssemblyModules(assemblies);
return builder;
}
我的应用程序由三层组成:UI、Service 和 DataAcces。这是我的 DataAccess 层的 UserRepository:
public class UserRepository : IUserRepository
{
}
这是我在服务层的服务:
public UserService(IUserRepository userRepository)
{
this._userRepository = userRepository;
}
这是我的控制器:
public UserController(IUserService userService)
{
this._userService = userService;
}
每次启动应用程序时,我都会收到以下错误:
没有找到任何构造函数 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 类型 'Soundyladder.Service.Services.UserService' 可以用 可用的服务和参数:无法解析参数 'Soundyladder.DataAccess.Repositories.IUserRepository userRepository' 构造函数 'Void .ctor(Soundyladder.DataAccess.Repositories.IUserRepository)'。 说明:执行过程中发生未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:Autofac.Core.DependencyResolutionException:无 找到的构造函数 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 类型 'Soundyladder.Service.Services.UserService' 可以用 可用的服务和参数:无法解析参数 'Soundyladder.DataAccess.Repositories.IUserRepository userRepository' 构造函数 'Void .ctor(Soundyladder.DataAccess.Repositories.IUserRepository)'。
我不知道为什么会这样。我在这个项目中的设置与我在其他项目中的设置相同。当我将我的其他项目与此进行比较时,我看不出有任何区别。
【问题讨论】:
-
看起来它希望您使用单个参数创建一个构造函数,即:
public UserRepository(IUserRepository repo) { ... } -
@RonBeyer:在我的存储库类中?
-
“任何人都可以帮助我”的答案是“是”,但这可能不是您真正想问的问题。作为一名编辑,我倾向于将其删减——最好的问题是具体的,例如“为什么
会出现在 中”。这比寻求“帮助”更容易回答,后者有点宽泛和不确定。
标签: c# asp.net-mvc autofac