public EnumDictionaryKeyConverter() { string[] names = Enum.GetNames(typeof(T)); T[] values = Enum.GetValues(typeof(T)).Cast <T>().ToArray(); for (int i = 0; i < names.Length; i++) { ReadOnlyMemory <byte> name = Encoding.ASCII.GetBytes(names[i]); T value = values[i]; _names2Values.Add(name.Span, value); _values2Names.Add(value, name); } }
public ObjectConverter(CborOptions options) { _options = options; _registry = options.Registry; _objectMapping = _registry.ObjectMappingRegistry.Lookup <T>(); _memberConvertersForWrite = new List <IMemberConverter>(); foreach (IMemberMapping memberMapping in _objectMapping.MemberMappings) { IMemberConverter memberConverter = memberMapping.GenerateMemberConverter(); if (memberMapping.CanBeDeserialized || _objectMapping.IsCreatorMember(memberConverter.MemberName)) { _memberConvertersForRead.Add(memberConverter.MemberName, memberConverter); if (memberConverter.RequirementPolicy == RequirementPolicy.AllowNull || memberConverter.RequirementPolicy == RequirementPolicy.Always) { _requiredMemberConvertersForRead.Add(memberConverter); } } if (memberMapping.CanBeSerialized) { _memberConvertersForWrite.Add(memberConverter); } } _isInterfaceOrAbstract = typeof(T).IsInterface || typeof(T).IsAbstract; _isStruct = typeof(T).IsStruct(); if (!_isInterfaceOrAbstract && !_isStruct && _objectMapping.CreatorMapping == null) { ConstructorInfo?defaultConstructorInfo = typeof(T).GetConstructor( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null); if (defaultConstructorInfo == null) { throw new CborException($"Cannot find a default constructor on type {typeof(T)}"); } _constructor = defaultConstructorInfo.CreateDelegate <T>(); } _discriminatorConvention = _registry.DiscriminatorConventionRegistry.GetConvention(typeof(T)); }
public void AddTryGet(string values) { ByteBufferDictionary <string> binaryTree = new ByteBufferDictionary <string>(); string[] valuesArray = values.Split(','); foreach (string value in valuesArray) { binaryTree.Add(value.AsBinarySpan(), value); } foreach (string value in valuesArray) { bool success = binaryTree.TryGetValue(value.AsBinarySpan(), out string actualValue); Assert.True(success); Assert.Equal(value, actualValue); } }
public EnumConverter(CborOptions options) { _options = options; string[] names = Enum.GetNames(typeof(T)); T[] values = Enum.GetValues(typeof(T)).Cast <T>().ToArray(); values2Names = new Dictionary <T, ReadOnlyMemory <byte> >(names.Length); for (int i = 0; i < names.Length; i++) { T value = values[i]; ReadOnlyMemory <byte> name = Encoding.ASCII.GetBytes(names[i]); names2Values.Add(name.Span, value); values2Names[value] = name; } }