Я пытаюсь понять пример кода от an article о впрыске зависимостей.Зависимость впрыска - контроллер завод
В принципе, есть фабрика контроллеров со словарем. Ключами являются строки, значения - это функции, принимающие RequestContext
и возвращающие IController
объект.
public class MyControllerFactory:DefaultControllerFactory
{
private Dictionary<string, Func<RequestContext, IController>> controllers;
public MyControllerFactory(ICustomerRepository repository)
{
controllers = new Dictionary<string, Func<RequestContext, IController>>();
controllers["Home"] = controller => new HomeController(repository);
}
public override IController CreateController(RequestContext requestContext, string controllerName)
{
if(controllers.ContainsKey(controllerName))
{
return controllers[controllerName](requestContext);
}
else
{
return null;
}
}
}
В строке ниже, AFAIK, добавляет функцию, определенную с лямбда-выражения (он принимает controller
в качестве аргумента и возвращает new HomeController(repository)
).
controllers["Home"] = controller => new HomeController(repository);
Теперь, какой смысл требовать аргумент RequestContext (названный controller
выше), если функция ничего не делает с ней, потому что она просто возвращает new HomeController(repository)
? Какова цель передачи любого аргумента функции, которая возвращает новый объект, не используя этот аргумент? Или, может, и так, но я не вижу этого.