我正在尝试使用 StructureMap 为我的 ASP.NET MVC 4 站点设置 IoC。这是我的StructureMapDependencyResolver
课:
public class StructrueMapDependencyResolver : IDependencyResolver
{
public object GetService(Type serviceType)
{
return IocContainer.GetInstance(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return IocContainer.GetAllInstances(serviceType);
}
}
这是我的 IocContainer 的一部分
public static class IocContainer
{
....
public static object GetInstance(Type t)
{
return ObjectFactory.TryGetInstance(t);
}
public static IEnumerable<object> GetAllInstances(Type t)
{
return ObjectFactory.GetAllInstances(t).Cast<object>();
}
}
这是我的 Global.aspx.cs 的样子
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
IocContainer.RegisterAllTypes(Server.MapPath("~\\Bin"), AssemblyList.MyAssemblies);
DependencyResolver.SetResolver(new StructrueMapDependencyResolver());
}
}
最后我有一个依赖于服务的简单控制器:
public class ManagePostController: Controller
{
private ISomeService _someService;
public ManagePostController(ISomeService svc)
{
_someService= svc;
}
}
当我启动我的网站时,出现以下异常:
没有为此对象定义无参数构造函数。
[InvalidOperationException:尝试创建类型为“Foothill.WebAdmin.Controllers.ManagePostController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +247
我不确定我需要在哪里更改?