gpt4 book ai didi

c# - MVC 3 beta + Dependency Resolver + Unity = 有​​问题

转载 作者:太空狗 更新时间:2023-10-29 22:55:21 25 4
gpt4 key购买 nike

我尝试将 Dependency Resolver 与 Unity 结合使用,但在创建 Controller 时遇到了一些问题。这里的 Controller 示例:

public class AccountController : Controller
{
private readonly ICourseService _courseService;

public AccountController(ICourseService courseService)
{
_courseService = courseService;
}
}

但是,当 Controller 尝试创建时 - 我得到一个异常“没有为此对象定义无参数构造函数。”我什至尝试为此 Controller 添加默认构造函数,但 courseService 没有创建。还尝试添加具有 [Dependency] 属性的属性 - 没有任何反应。这是依赖解析器类:

public class UnityDependencyResolver : IDependencyResolver
{
private readonly IUnityContainer _container;
public UnityDependencyResolver(IUnityContainer container)
{
_container = container;
}

public object GetService(Type serviceType)
{
return _container.IsRegistered(serviceType) ? _container.Resolve(serviceType) : null;
}

public IEnumerable<object> GetServices(Type serviceType)
{
return _container.IsRegistered(serviceType) ? _container.ResolveAll(serviceType) : new List<object>();
}
}

和 Global.asax.cs:

    protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);

var container = new UnityContainer();
container.RegisterType<ICourseService, CourseService>();

DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}

谁能帮帮我?

最佳答案

旧帖子,但这些其他答案完全错误。我自己今天遇到了这个问题,您绝对不需要注册 Controller 或 Controller 工厂。此消息仅表示 Controller 的依赖关系层次结构中的某些内容未注册。例如。如果您的 Controller 在其构造函数中需要 IService,而 IService 在其构造函数中需要 IRepository,但您忘记注册 IRepository,您将收到此错误。

关于c# - MVC 3 beta + Dependency Resolver + Unity = 有​​问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com