У меня есть то, что я ' Рассмотрим стандартный проект шаблона репозитория .NET MVC3, с которым я играл / учился. Это довольно стандартная структура.
Я столкнулся со сценарием, в котором мне нужно внедрить закрытый член класса, у которого есть только статический конструктор, что не позволяет мне внедрить конструктор.
Рассматриваемый класс является оболочкой для использования реализации кэширования AppFabric, которую я только что завершил. (Для тех, кто так склонен, моя реализация основана на
Я столкнулся со сценарием, в котором мне нужно ввести частный член класс, который имеет только статический конструктор, поэтому мне не повезло с внедрением конструктора.
Рассматриваемый класс является оболочкой для использования реализации кэширования AppFabric, которую я только что завершил. (Для тех, кто так склонен, моя реализация основана на
Я столкнулся со сценарием, в котором мне нужно внедрить частный член класс, который имеет только статический конструктор, поэтому мне не повезло с внедрением конструктора.
Рассматриваемый класс является оболочкой для использования реализации кэширования AppFabric, которую я только что завершил. (Для тех, кто так склонен, моя реализация основана на http://cgeers.wordpress.com/2010/07/04/windows-server-appfabric-caching/ )
По сути, у меня есть:
Кэш статического класса - это то место, где я хотел бы вставить ICacheProvider, который разрешается в DefaultCacheProvider.
private static readonly ICacheProvider CacheProvider;
static Cache()
{
//DependencyResolver.Current.GetService();
//CacheProvider =
// (ICacheProvider)ServiceLocator.Current
// .GetInstance(typeof(ICacheProvider));
}
public static void Add(string key, object value)
{
CacheProvider.Add(key, value);
}
public static void Add(string key, object value, TimeSpan timeout)
{
CacheProvider.Add(key, value, timeout);
}
public static object Get(string key)
{
return CacheProvider[key];
}
public static bool Remove(string key)
{
return CacheProvider.Remove(key);
}
На основании того, что я прочитал, это похоже на сценарий для ServiceLocator, но я видел несколько очень сильных мнений по этому поводу (анти-шаблон и т. д.), это и мое знакомство с ним низкое так что я не уверен в реализации, которая сработает.
Я видел рекомендацию в StackOverflow разработать класс Cache как стандартный класс и внедрить ICacheProvider в SingletonScope
kernel.Bind().To().InSingletonScope();
, но я лично предпочел бы статическую оболочку для простота использования.
Можно ли здесь настроить ServiceLocator или есть еще что-то очевидное, о чем я не знаю? Если ServiceLocator - лучший вариант, можно ли использовать какую-либо связь с Ninject? я знаю, что Ninject теперь имеет возможности локатора сервисов, но не знал, как их реализовать.
Спасибо за любую информацию.