0

我收到“没有为此对象定义无参数构造函数”错误。这以前出现过,但我所看到的没有任何东西可以为我解决这个问题。我在这里做 DI 的方式是否会导致此错误?

在我的控制器中:

public class NameController : Controller
{

 private readonly IStuff stuff;

 public NameController(IStuff stuff)
 {
   this.stuff = stuff;
 }


 public ActionResult Index()
 {
    NameModel model = stuff.GetNameModel();   
    return View(model);  
 }

}

在我的 AutofacConfig.cs 中:

    public static ContainerBuilder GetBuilder()
    {
        var builder = new ContainerBuilder();
        builder.Register<Idb>(c => new db(...);
        builder.RegisterType<Stuff>().As<IStuff>();
    }

在 Global.asax.cs 中:

    private void BuildContainer()
    {
        var builder =  AutofacConfig.GetBuilder();
        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    }   

东西类:

public interface IStuff
{

    NameModel GetNameModel();

}


 public class Stuff
{
    private readonly Idb db;

    public Stuff(Idb db)
    {
        this.db = db;


    }


    public NameModel GetNameModel()
    {
        NameModel modelobject = new NameModel();

        modelobject.info = "info";

        return modelobject ;

    }
 }

这是异常消息...

没有为此对象定义无参数构造函数。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[MissingMethodException: 没有为此对象定义无参数构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +122 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +239 System.Activator.CreateInstance(Type type, Boolean nonPublic) +85 System.Activator.CreateInstance(Type type ) +12 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +55

[InvalidOperationException:尝试创建类型为“....NameController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +178 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80 System. Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +102 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& 控制器, IControllerFactory& factory) +188 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback 回调,对象状态)+50 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,

4

0 回答 0