Beispiel #1
0
        public void AddField(string name, int col)
        {
            if (parsers.ContainsKey(name))
            {
                throw new FieldException("allready constains a field with that name");
            }
            if (!Array.Exists(fi, f => f.Name == name))
            {
                throw new FieldException($"No such field found in {type.Name}");
            }

            CsvBasicInfo bInfo     = new CsvBasicInfo(type, name, col, separator);
            FieldInfo    fInfo     = type.GetField(name);
            Type         fieldType = fInfo.FieldType;                           // prop Type
            FieldWrapper fw;
            IReflection  reflect;

            if (ReflectorsCache.cache.TryGetValue(fieldType, out reflect))
            {
                fw = new FieldWrapper((FieldReflect)reflect, bInfo);
                parsers.Add(name, fw);
            }
            else
            {
                FieldReflect fr = new FieldReflect(fieldType);
                ReflectorsCache.cache.Add(fieldType, fr);
                fw = new FieldWrapper(fr, bInfo);
                parsers.Add(name, fw);
            }
        }
Beispiel #2
0
 public FieldWrapper(FieldReflect fReflect, CsvBasicInfo csvInfo)
 {
     this.fReflect = fReflect;
     this.csvInfo  = csvInfo;
 }