我收到“没有为此对象定义无参数构造函数”错误。这以前出现过,但我所看到的没有任何东西可以为我解决这个问题。我在这里做 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,