internal void Completed(int refId) { var currentObject = GetObjectByReferenceId(refId); if (currentObject == null) { // this may happen with empty delegates return; } if (HashCodeBasedWaitingValues.TryGetValue(refId, out var dictionaryAndValue)) { HashCodeBasedWaitingValues.Remove(refId); var dictionaryType = dictionaryAndValue.Dictionary.GetType(); readMethods.addHashCodeBasedDeferredElementProvider.GetOrCreate(dictionaryType)(dictionaryAndValue.Dictionary, currentObject, dictionaryAndValue.Value); } var type = currentObject.GetType(); readMethods.completeMethodsProvider.GetOrCreate(type)(this, refId); }
internal void AddHashCodeBasedWaitingValue(object dictionary, int keyId, object value) { HashCodeBasedWaitingValues.Add(keyId, (dictionary, value)); }