/// <summary> /// Get a page from cache or from disk (and put on cache) /// </summary> public T GetPage <T>(uint pageID, bool setDirty = false) where T : BasePage { var page = _cache.GetPage(pageID); // is not on cache? load from disk if (page == null) { var buffer = _disk.ReadPage(pageID); page = BasePage.ReadPage(buffer); _cache.AddPage(page); } // set page as dirty if passing by param if (setDirty) { this.SetDirty((T)page); } return((T)page); }