public interface ITaskProvider
{
T GetTask<T>();
}
В реализации ITaskprovider ниже, как вы видите, IUserTask и IIdentityTask внедряются из свойства вместо конструктора.Причина в том, что Windsor автоматически создает внедренные свойства во время выполнения, когда к ним обращаются, так что мне не нужно помещать все необходимые инжектированные зависимости в конструктор..
public ITaskProvider TaskProvider { get; set; }
public AuctionsController(ITaskProvider taskProvider)
{
TaskProvider = taskProvider;
}
И здесь я называю TaskProvider и его методы отлично.
public ActionResult Index()
{
var userTasks = TaskProvider.GetTask<IUserTasks>();
var user = userTasks.FindbyId(guid);
}
Здесь все работает нормально.
Мне сказали, что это больше похоже на шаблон поиска служб и нарушает шаблон внедрения зависимостей, и я хочу знать, что здесь нарушается.