如果我创建自定义控制器工厂,在这种情况下这行代码意味着
DependencyResolver.Current.GetService ?
public class CustomControllerFactory : IControllerFactory
{
public IController CreateController(RequestContext requestContext, string controllerName)
{
Type targetType = null;
switch (controllerName)
{
case "Product":
targetType = typeof(ProductController);
break;
case "Customer":
targetType = typeof(CustomerController);
break;
default:
requestContext.RouteData.Values["controller"] = "Product";
targetType = typeof(ProductController);
break;
}
return targetType == null ? null :
(IController)DependencyResolver.Current.GetService(targetType); // what this means here ?
}
答案 0 :(得分:1)
该行表示程序员希望当前依赖项解析程序解析指定类型的服务。
如果您的解析器设置正确,它将返回您指定类型的实例。
您也可以使用通用版本来避免强制转换。
此外,我建议不要使用魔术字符串,而是使用枚举或其他强值。
答案 1 :(得分:1)
这意味着当前依赖项解析器应该解析targetType的依赖性。它本身就是Service Locator design pattern的实现。
要设置依赖项解析器,您应该在DependencyResolver.SetResolver(myResolver)
Application_Start