public void GetReferenceFromID(string refID, StorageLoadHandler callback) { if (callback == null) { return; } ISaveable reference; if (_idToRefMap.TryGetValue(refID, out reference)) { callback(true, reference); } else { if (!_refReadyActions.ContainsKey(refID)) { _refReadyActions.Add(refID, callback); } else { _refReadyActions[refID] += callback; } } if (ReferenceRequestedEvent != null) { ReferenceRequestedEvent(refID); } }
bool IStorageReferenceLoader.LoadRef <T>(string key, StorageLoadHandler <T> refLoadedCallback) { string refId = GetRefID(key); if (string.IsNullOrEmpty(refId)) { refLoadedCallback(null); return(false); } _storageAccess.ActiveRefHandler.GetReferenceFromID(refId, (trueReferenceLoad, reference) => { if (trueReferenceLoad) { trueReferenceLoad = reference == null || reference.GetType().IsAssignableFrom(typeof(T)) && _keyToReferenceID.ContainsKey(key); } if (trueReferenceLoad) { refLoadedCallback((T)reference); } else { refLoadedCallback(default(T)); } }); return(true); }