我有一个使用Ninject和MvcSiteMapProvider的MVC3应用程序。
我创建了这个类,MvcSiteMapProvider使用它来动态添加节点到我的站点地图中:
MvcSiteMapProvider会自行实例化此类型,因此我不确定如何将我的存储库注入其中。 我考虑通过获取内核的句柄并在方法中调用
不要使用Ninject作为服务定位器,那我该怎么办呢?我在stackoverflow上找到了这个问题,所有答案都说不要使用服务定位。我应该怎么办?
我创建了这个类,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; }
不要使用Ninject作为服务定位器,那我该怎么办呢?我在stackoverflow上找到了这个问题,所有答案都说不要使用服务定位。我应该怎么办?