为什么默认工厂不会返回控制器的全名(带有命名空间)?我正在使用服务定位器和 autofac。
using System.Web.Mvc;
using Microsoft.Practices.ServiceLocation;
namespace Application.Core.MVC
{
public override IController CreateController(System.Web.Routing.RequestContext requestContext, string **controllerName**)
{
return ServiceLocator.Current.GetInstance<IController>(controllerName);
}
}
我有两个家庭控制器(一个在区域博客下)
在上面的代码中,controllerName 只返回没有完整限定名的“Home”。当我尝试为依赖注入注册控制器的名称时,这会产生一个问题。这是我现在根据这种情况注册控制器的方法。即使这样也毫无例外地调出页面。但是当我访问 http://localhost/Home时,两个控制器都会被调用。
foreach (var tp in currentAssemblyControllersTypes)
builder.Register(tp).FactoryScoped().Named(tp.Name.Replace("Controller", ""));
任何人都可以帮忙吗?谢谢。