首先,我使用的是 Ninject 1.5。我有两个项目:Web 项目和一个类库。我的 DI 配置在 Web 项目中。在我的类库中,我定义了以下内容:
public interface ICacheService<T>
{
string Identifier { get; }
T Get();
void Set( T objectToCache, TimeSpan timeSpan );
bool Exists();
}
然后是一个名为CategoryCacheService的具体类。
在我的网络项目中,我绑定了两者:
Bind( typeof( ICacheService<List<Category>> ) ).To( typeof(CategoryCacheService)).Using<SingletonBehavior>();
在我的类库中,我有 HtmlHelper 类的扩展方法,例如:
public static class Category
{
[Inject]
public static ICacheService<List<Category>> Categories { get; set; }
public static string RenderCategories(this HtmlHelper htmlHelper)
{
var c = Categories.Get();
return string.Join(", ", c.Select(s => s.Name).ToArray());
}
}
有人告诉我,您不能注入静态属性,而是应该使用Kernel.Get<>() - 但是...由于上面的代码位于类库中,因此我无权访问内核。我怎样才能从这一点上获得内核,或者有更好的方法吗?