private Encoders.Encoder GetEncoder(DbfFieldType type, Encoding encoding) { switch (type) { case DbfFieldType.Character: return(new Encoders.CharacterEncoder(encoding)); case DbfFieldType.Currency: return(new Encoders.CurrencyEncoder(encoding)); case DbfFieldType.Date: return(new Encoders.DateEncoder(encoding)); case DbfFieldType.DateTime: return(new Encoders.DateTimeEncoder(encoding)); case DbfFieldType.Integer: return(new Encoders.IntegerEncoder(encoding)); case DbfFieldType.Float: return(new Encoders.FloatEncoder(encoding)); case DbfFieldType.Double: return(new Encoders.DoubleEncoder(encoding)); case DbfFieldType.Numeric: return(new Encoders.NumericEncoder(encoding)); case DbfFieldType.Logical: return(new Encoders.LogicalEncoder(encoding)); case DbfFieldType.NullFlags: return(new Encoders.NullFlagsEncoder(encoding)); case DbfFieldType.Memo: return(new Encoders.MemoEncoder(encoding)); default: throw new ArgumentException($"No encoder found for dBASE type '{type}'."); } }
internal DbfField(string name, DbfFieldType type, int length, Encoding encoding) { Name = name; Type = type; Length = (byte)length; Encoder = GetEncoder(Type, encoding); }
public DbfField(string name, DbfFieldType type, byte length) { this.Name = name; this.Type = type; this.Length = length; this.Precision = 0; this.WorkAreaID = 0; this.Flags = 0; }
public DbfField(string name, DbfFieldType type, int length = 0, int precision = 0) { Name = name; Type = type; Length = length; Precision = precision; switch (type) { case DbfFieldType.Float: if (length == 0) { Length = 10; } break; } }
public static IEncoder GetEncoder(DbfFieldType type) { switch (type) { case DbfFieldType.Character: return(CharacterEncoder.Instance); case DbfFieldType.Currency: return(CurrencyEncoder.Instance); case DbfFieldType.Date: return(DateEncoder.Instance); case DbfFieldType.DateTime: return(DateTimeEncoder.Instance); case DbfFieldType.Float: return(FloatEncoder.Instance); case DbfFieldType.Integer: return(IntegerEncoder.Instance); case DbfFieldType.Logical: return(LogicalEncoder.Instance); case DbfFieldType.Memo: return(MemoEncoder.Instance); case DbfFieldType.NullFlags: return(NullFlagsEncoder.Instance); case DbfFieldType.Numeric: return(NumericEncoder.Instance); default: throw new ArgumentException("No encoder found for dBASE type " + type); } }
public DbfField AddNewField(string name, DbfFieldType type, int length) { if (type == DbfFieldType.Memo) { if (Header.Version == DbfVersion.dBase4SQLSystemNoMemo || Header.Version == DbfVersion.dBase4SQLTableNoMemo || Header.Version == DbfVersion.FoxBaseDBase3NoMemo) { throw new InvalidOperationException("Memo fields are not supported for this database version."); } if (Memo == null) { Memo = CreateMemo(); } } var field = new DbfField(name, type, length, _encoding); Fields.Add(field); return(field); }