using System; using System.Collections; using System.Linq; namespace Unity.VisualScripting { public sealed class DictionaryKeyAtIndexMetadata : DictionaryIndexMetadata { public DictionaryKeyAtIndexMetadata(int index, Metadata parent) : base(SubpathPrefix, index, parent) { } protected override object rawValue { get { return ((IDictionary)parent.value).Keys.Cast().ElementAt(index); } set { throw new InvalidOperationException(); } } protected override Type GetDefinedType(Type dictionaryType) { return TypeUtility.GetDictionaryKeyType(dictionaryType, true); } public const string SubpathPrefix = "__keyAt."; } }