private TagMapLeaf AddEnumerableLeaf(Stack <TagMapParent> parents, PropertyInfo property, FixTagAttribute fixTagAttribute, RepeatingGroupAttribute repeatingGroup, TypeConverterAttribute?typeConverter, int key, Type innerType)
        {
            BaseSetter setter;

            if (typeConverter != null)
            {
                setter = _propertySetterFactory.GetTypeConvertingSetter(property);
            }
            else
            {
                setter = _propertySetterFactory.GetSetter(property, innerType);
            }
            var value = TagMapLeaf.CreateEnumerable(property, repeatingGroup.Tag, innerType, setter);

            if (parents.Any())
            {
                value.Parents = parents.ToList();
            }
            if (typeConverter != null)
            {
                value.TypeConverterName = typeConverter.ConverterTypeName;
            }
            value.IsEncoded = fixTagAttribute.Encoded;
            _map.TryAdd(key, value);
            return(value);
        }
        private void AddRepeatingGroupLeaf(Stack <TagMapParent> parents, PropertyInfo property, RepeatingGroupAttribute repeatingGroup, Type innerType, int key)
        {
            var value = TagMapLeaf.CreateRepeatingTag(property, innerType, _propertySetterFactory.GetRepeatingGroupTagSetter(property));

            if (parents.Any())
            {
                value.Parents = parents.ToList();
            }
            value.IsEncoded         = false;
            value.TypeConverterName = null;
            _map.TryAdd(key, value);
        }
 private TagMapParent CreateRepeatingParentNode(PropertyInfo property, RepeatingGroupAttribute repeatingGroup, Type innerType)
 {
     return(TagMapParent.CreateEnumerable(property, repeatingGroup.Tag, innerType, _propertySetterFactory.GetParentSetter(property)));
 }