Я думаю, что вы новичок в реактивном программировании.Понимание основных принципов помогает при использовании Akavache.Может быть, это вступление помогает.
Чтобы ответить на ваш вопрос, поместите код, подобный этому, в свой класс "хранилище":
public override IObservable<MyClass> Get(string key)
{
var cachedObservable = blobCache.GetAndFetchLatest<MyClass>(key,
() => GetFromServerAsync(key));
return cachedObservable ;
}
И в вызывающей стороне:
private void getNewData()
{
var myClassObservable = myRepository.Get("the key");
myClassObservable.Subscribe(handleNewMyClass);
}
private void handleNewMyClass(MyClass newClass)
{
//handle the new class
}
Обратите внимание, что handleNewMyClass()
вызывается дважды:
- сначала с MyClass из кэша
- , а затем с MyClass, который был выбран (с сервера)
Используя этот подход, вы можете просто поместить класс репозитория в ваш контейнер IoC.