MVC3, Ninject, MvcSiteMapProvider - Как добавить зависимость к переопределенному методу

У меня есть приложение MVC3, которое использует Ninject и MvcSiteMapProvider .

Я создал этот класс, который MvcSiteMapProvider использует для динамического добавления узлов в мою карту сайта:

public class PageNodeProvider : DynamicNodeProviderBase
{
    public override IEnumerable GetDynamicNodeCollection()
    {            
         // need to get repository instance
         var repository = // how do I get this???

         foreach (var item in repository.GetItems())
         {
              yield return MakeDynamicNode(item);
         }
    }
}

MvcSiteMapProvider сам создает экземпляр этого типа, поэтому я не уверен, как внедрить в него свой репозиторий.

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

    // Summary:
    //     Gets the kernel.
    [Obsolete("Do not use Ninject as Service Locator")]
    public IKernel Kernel { get; }

Не использовать Ninject в качестве локатора службы ?! Как еще я могу это сделать? Затем я нашел этот вопрос здесь, в stackoverflow , и во всех ответах говорится, что не использовать Service Location.

Что мне делать?

7
задан Community 23 May 2017 в 11:53
поделиться