【问题标题】:MVC3 / Structure Map 2.6.2 DI custom controller factory problemMVC3/结构图2.6.2 DI自定义控制器出厂问题
【发布时间】:2011-08-16 14:30:36
【问题描述】:

我在将非无参数类作为模型传递给控制器​​中的视图时遇到问题。

我最近从结构图 2.5.3 迁移到 2.6.2。在 2.5.3 中一切正常,但在 2.6.2 中不再适用。这是我的自定义控制器工厂:

public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        try
        {
            return ObjectFactory.GetInstance(controllerType) as Controller;
        }
        catch (StructureMapException)
        {
            Debug.WriteLine(ObjectFactory.WhatDoIHave());
            throw;
        }
    }
}

然后接线:

ControllerBuilder.Current.SetControllerFactory(typeof(StructureMapControllerFactory));

我的自定义模型绑定器抛出异常:http://screencast.com/t/xZDNAAmM

可能是什么问题?

【问题讨论】:

    标签: asp.net-mvc-3 dependency-injection inversion-of-control structuremap controller-factory


    【解决方案1】:

    我认为这与您的 DI 容器无关。当 instance 为 null 时,会调用你的 modelbinder,它可能会尝试创建一个 modelType 的新实例,这是不可能的,因为它没有无参数的构造函数。

    我想你只是在modelType的构造函数中添加了一个构造函数参数

    【讨论】:

    • 是的,我做到了,这就是我要解决的问题。我的 modelType 没有无参数构造函数,这就是 Structure Map 自定义控制器工厂应该处理的问题,因为我在该类的构造函数中使用了依赖注入?
    • 但是您不是通过结构映射构建模型类型(或者至少不是模型绑定器中使用的模型类型)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多