首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelStateDictionary循环依赖项-9对象不会自绑定

ModelStateDictionary循环依赖项-9对象不会自绑定
EN

Stack Overflow用户
提问于 2012-02-27 04:10:01
回答 1查看 347关注 0票数 1

我创建了一个初学者MVC 3应用程序安装程序,并在构造函数中传递了一个控制器构造函数--一个ModelStateDictionary对象。这是来自System.Web.Mvc命名空间的对象。

错误激活ModelStateDictionary使用ModelStateDictionary的隐式自绑定检测出两个服务的构造函数之间的周期性依赖。

激活路径: 3)将依赖ModelStateDictionary注入到ModelStateDictionary类型构造函数的参数字典中;2)向HomeController 1型构造函数的参数modelDict中注入依赖ModelStateDictionary

我如何解决这个问题?我怎么把它抽象成工作的方式呢?有可能吗?我搜索了Stackoverflow和ninject.org ..。但是在这里不知道它是如何应用的,因为我不能直接修改ModelStateDictionary。

代码语言:javascript
复制
public class HomeController : Controller
{
    private readonly ModelStateDictionary _modelDict;

    public HomeController(ModelStateDictionary modelDict)
    {
        _modelDict = modelDict;
    }

    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        return View();
    }
}


public void SetupDependencyInjection()
{
    IKernel kernel = new StandardKernel();

    //kernel.Bind<>().To<>();

    DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}


public class NinjectDependencyResolver : IDependencyResolver
{
    private readonly IResolutionRoot _resolutionRoot;

    public NinjectDependencyResolver(IResolutionRoot kernel)
    {
        _resolutionRoot = kernel;
    }


    public object GetService(Type serviceType)
    {
        return _resolutionRoot.TryGet(serviceType);
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        return _resolutionRoot.GetAll(serviceType);
    }
}

这是一个简单的例子,我不会在我自己的代码中使用这种方式.但情况和理论是一样的。ModelStateDictionary应该是隐式自绑定的。尽管存在不接受参数的构造函数,但Ninject选择了接受ModelStateDictionary对象的构造函数。如果参数最多的构造函数不能正常工作,那么九点对象不应该返回到没有参数的构造函数中吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-27 11:18:41

不,尼尼莫不会尝试构造函数,直到它找到一个不会失败的构造函数。它选择参数最多的构造函数,并使用它的绑定。如果构造函数失败,则引发异常。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9459965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档