dynamic?IRefactorEntity.MatchNode(object key) { Parent.EnsureSchemaMigration(); if (key == null) { throw new ArgumentNullException("key"); } if (!Key.SystemReturnType !.IsAssignableFrom(key.GetType())) { throw new InvalidCastException(string.Format("The key for entity '{0}' is of type '{1}', but the supplied key is of type '{2}'.", Name, Key.SystemReturnType.Name, key.GetType().Name)); } DynamicEntity value; if (!staticData.TryGetValue(key, out value)) { throw new ArgumentOutOfRangeException($"Only statically created data (via the upgrade script) can be loaded here."); } if (Parser.ShouldExecute) { return(DynamicEntity.Load(this, key)); } else { return(value); } }
public bool TryGetValue(TKey key, out object value) { var incr = Interlocked.Increment(ref _locker); if (incr != 1L) { NewMethod(); } var found = _inner.TryGetValue(key, out var h); if (found) // TODO what is GC between the lines? { if (h.IsAllocated) { value = h.Target; } else { _inner.Remove(key); h.Free(); value = null; found = false; } } else { value = null; } Volatile.Write(ref _locker, 0L); return(found); }
public static ModWorld GetOrCreate(CModInfo modInfo) { if (s_WorldsModIdLookup.TryGetValue(modInfo.Id, out var world)) { return(world); } return(new ModWorld(modInfo)); }
public static unsafe T GetOrigTrampoline <T>(this MethodBase target) { void *p = GetMethodStart(target); if (!_Origs.ContainsKey((long)p)) { return(default(T)); } ulong key = (ulong)p; Type t = typeof(T); Delegate del; if (_OrigTrampolines.TryGetValue(key, t, out del)) { return((T)(object)del); } del = (Delegate)(object)CreateTrampolineDirect <T>(target); _OrigTrampolines[key, t] = del; return((T)(object)del); }