Единица [зависимость] инжекция и Наследование

Версия №2 для меня - легче всего увидеть, легче прочитать, легко увидеть, где начинается и заканчивается if, то же самое для других, вам не нужно беспокоиться о заключении в скобки, если вы хотите добавить более одного оператора.

10
задан MicTech 17 June 2009 в 14:19
поделиться

4 ответа

Насколько я знаю, Unity разрешает только общедоступные свойства. Следовательно, ваша защищенная собственность не будет разрешена.

19
ответ дан 3 December 2019 в 20:06
поделиться

У меня тоже довольно мало опыта работы с Unity, но я думаю, что вам нужно зарегистрировать свой HomeController в contsaner, а не в регистраторе.

0
ответ дан 3 December 2019 в 20:06
поделиться

Я не уверен, связано ли это, но обычно я избегаю использования пространств имен и классов с одинаковыми именами (в вашем случае Logger.Logger), поскольку у меня были проблемы с этим в прошлое. Но проблема может быть не в этом.

Я также не уверен, работает ли атрибут [Dependency] для производных типов. Если вы измените его для внедрения конструктора, это все равно не сработает? Что-то вроде:

public class ApplicationController : Controller
{
    protected ILogger _logger { get; set; }


    public ApplicationController(ILogger logger)
    {
         this._logger = logger;

    }
}

и

public class HomeController : ApplicationController
{
    public HomeController(ILogger logger) : base(logger)
    {

    }
    public ActionResult Index()
    {
        _logger.Log("Home controller constructor started.");
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}

, а остальные точно так же. Код выглядит нормально.

0
ответ дан 3 December 2019 в 20:06
поделиться

У меня была такая же проблема, и я решил ее, изменив ILogger на общедоступный. Это связано с проектом ASP.NET MVC2 в VS2010, .NET 4. Логически это имеет смысл, поскольку Unity не создает прокси-класс или что-то еще, он просто устанавливает свойства, к которым у него есть доступ, и имеет сопоставление для - следовательно, только для публики.

0
ответ дан 3 December 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: