Ejemplo n.º 1
0
        private void ParseCellularValue(ITableParser tableParser, Action <string, string> addFieldMapping, object model, ExcelTemplatePath path, Dictionary <ExcelTemplatePath, int> enumerablesLengths)
        {
            var leafSetter    = ObjectPropertySettersExtractor.ExtractChildObjectSetter(model, path);
            var leafModelType = ObjectPropertiesExtractor.ExtractChildObjectTypeFromPath(model.GetType(), path);

            if (path.HasArrayAccess)
            {
                ParseEnumerableValue(tableParser, addFieldMapping, model, path, leafSetter, leafModelType, enumerablesLengths);
            }
            else
            {
                ParseSingleValue(tableParser, addFieldMapping, leafSetter, path, leafModelType);
            }
        }
Ejemplo n.º 2
0
        private void ParseFormValue(ITableParser tableParser, Action <string, string> addFieldMapping, object model, ICell cell, ExcelTemplatePath path)
        {
            var childSetter    = ObjectPropertySettersExtractor.ExtractChildObjectSetter(model, path);
            var childModelType = ObjectPropertiesExtractor.ExtractChildObjectTypeFromPath(model.GetType(), path);

            var(childFormControlType, childFormControlName) = GetFormControlDescription(cell);

            if (path.HasArrayAccess)
            {
                throw new InvalidOperationException("Enumerables are not supported for form controls");
            }

            var parser       = parserCollection.GetFormValueParser(childFormControlType, childModelType);
            var parsedObject = parser.ParseOrDefault(tableParser, childFormControlName, childModelType);

            childSetter(parsedObject);
            addFieldMapping(path.RawPath, childFormControlName);
        }