using System; using System.Collections.ObjectModel; namespace Unity.VisualScripting { public class GuidCollection : KeyedCollection, IKeyedCollection where T : IIdentifiable { protected override Guid GetKeyForItem(T item) { return item.guid; } protected override void InsertItem(int index, T item) { Ensure.That(nameof(item)).IsNotNull(item); base.InsertItem(index, item); } protected override void SetItem(int index, T item) { Ensure.That(nameof(item)).IsNotNull(item); base.SetItem(index, item); } public new bool TryGetValue(Guid key, out T value) { if (Dictionary == null) { value = default(T); return false; } return Dictionary.TryGetValue(key, out value); } } }