У меня есть приложение MVC3, которое использует Ninject и MvcSiteMapProvider .
Я создал этот класс, который MvcSiteMapProvider использует для динамического добавления узлов в мою карту сайта:
public class PageNodeProvider : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> 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<Repository>()
в методе.Но я увидел это свойство, глядя на определение NinjectHttpApplication:
// Summary:
// Gets the kernel.
[Obsolete("Do not use Ninject as Service Locator")]
public IKernel Kernel { get; }
Do not use Ninject as Service Locator
?!Как еще я должен это сделать?Затем я нашел этот вопрос здесь в stackoverflow , и во всех ответах говорится, что не использовать расположение службы.
Что я должен делать?