Как внедрить служебные зависимости в карту сайта MVC DynamicNodeProviderBase с использованием StructureMap
Рассмотрим следующий код:
public class InboxMenuItemDynamicProvider : DynamicNodeProviderBase
{
private IMyService _myService { get; set; }
public InboxMenuItemDynamicProvider(IActionService actionService)
{
_myService = myService;
}
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
// use _myService here....e.g. db access
}
}
}
Как мне перейти к внедрению зависимости сервиса в Mavc Sitemap DynamicNodeProvider с использованием StructureMap и MVC3? Я использую решатель зависимостей MVC3.
Тем не менее, при запуске приложения я получаю сообщение об ошибке "нет конструктора по умолчанию". Мне нужно как-то внедрить служебные зависимости в провайдера, но я в полной растерянности относительно того, где / как я могу их внедрить. Я даже не знаю, возможно ли это, поскольку Mvc Site Map может находиться за пределами средства разрешения зависимостей.
1 ответ
Решение
Смотрите эту ссылку: http://mvcsitemap.codeplex.com/discussions/263971
Я думаю, что вы могли бы просто использовать:
private IMyService _myService
{
get
{
return DependencyResolver.Current.GetService<IMyService>();
}
}
и не делать ничего конкретного в вашем конструкторе