Для начала использую Ninject 1.5. У меня есть два проекта: веб-проект и библиотека классов. Моя конфигурация DI находится в веб-проекте. В моей библиотеке классов я определил следующее:
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 ‹> (). Однако ... Поскольку приведенный выше код находится в библиотеке классов, у меня нет доступ к ядру. Как я могу получить ядро с этого момента или есть лучший способ сделать это?