public static void WriteSchema(FieldSpecList definition, string filename, DefinitionFormat format)
        {
            switch (format)
            {
            case DefinitionFormat.Text:
                using (var w = new StreamWriter(filename))
                {
                    foreach (var item in definition)
                    {
                        w.WriteLine("{0,-20} {1,-20} {2}", item.Type, item.Name, item.ToSpec());
                    }

                    w.WriteLine(definition.ToRecordLength());

                    w.Flush();
                    w.Close();
                }
                break;

            case DefinitionFormat.XML:
            {
                var s = Serializer.Serialize(definition, Serializer.SerializeMethods.Xml);
                File.WriteAllText(filename, s);
            }
            break;

            default:
                throw new ArgumentException("format=" + format);
            }
        }
        private static FieldSpecList ReadTextSchema(IEnumerable <string> enumerator)
        {
            var result = new FieldSpecList();

            foreach (var item in enumerator)
            {
                string line = RemoveComments(item).ToLower().Trim(' ', '\t');
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }

                var len = FieldSpecList.ReadRecordLength(line);
                if (len.HasValue)
                {
                    result.RecordLength = len.Value;
                    continue;
                }

                var spec = FieldSpec.ToFieldSpec(line);
                result.Add(spec);
            }

            return(result);
        }