/// <inheritdoc cref="IResourceManager.FreezeResourceable{T}"/> public void FreezeResourceable <T>(IResourceable <T> resourceable) where T : IKeyed, INameable { if (resourceable.IsFrozen) { throw new ArgumentException("This message is only to be called by IResourceable"); } if (!_resourceHooks.TryGetValue(resourceable, out var hooksObj)) { return; } var hooks = (ResourceHook <T>)hooksObj; var e = resourceable.GetResourceables(); foreach (var item in e) { hooks(item); } }
public void AddHook <T>(IResourceable <T> resourceable, ResourceHook <T> hook) where T : IKeyed, INameable { if (resourceable.IsFrozen) { var e = resourceable.GetResourceables(); foreach (var item in e) { hook(item); } } ResourceHook <T> hooks; if (_resourceHooks.TryGetValue(resourceable, out var hooksObj)) { hooks = (ResourceHook <T>)hooksObj; hooks += hook; } else { hooks = hook; } _resourceHooks[resourceable] = hooks; }