public void RegisterPhotoSource (ICacheablePhotoSource source) { if (source.CacheId != 0) { throw new Exception ("Can't register an already registered source!"); } var cache = new SqliteCachedPhotoSource (source); cache.AvailabilityChanged += OnCachedSourceAvailabilityChanged; source_provider.Save (cache); source.CacheId = cache.CacheId; source.Persist (); cache.Start (this); }