public static MappingDictionary ParseText(
            IList <string> fieldIDs,
            TextMappingParser parser)
        {
            MemoryStream memoryStream = new MemoryStream();

            try
            {
                StreamWriter streamWriter = new StreamWriter((Stream)memoryStream);
                try
                {
                    foreach (string fieldId in (IEnumerable <string>)fieldIDs)
                    {
                        streamWriter.WriteLine(fieldId);
                    }
                    streamWriter.Flush();
                    return(MappingDictionary.ParseText((Stream)memoryStream, parser));
                }
                finally
                {
                    streamWriter?.Close();
                }
            }
            finally
            {
                memoryStream?.Close();
            }
        }
 public static TextMappingParser Create()
 {
     if (TextMappingParser.__parser == null)
     {
         TextMappingParser.__parser = new TextMappingParser();
         TextMappingParser.__parser.MappingConvertFunc = new Func <DataRow, IMapping>(TextMappingParser.MappingConvert);
     }
     return(TextMappingParser.__parser);
 }
        public static MappingDictionary ParseText(
            Assembly assembly,
            string resName,
            TextMappingParser parser)
        {
            Stream manifestResourceStream = assembly.GetManifestResourceStream(resName);

            try
            {
                return(MappingDictionary.ParseText(manifestResourceStream, parser));
            }
            finally
            {
                manifestResourceStream?.Close();
            }
        }
        public static MappingDictionary ParseText(
            string fileName,
            TextMappingParser parser)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                throw new ArgumentNullException(nameof(fileName));
            }
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException(string.Format("Can't find mapping file:{0}", (object)fileName));
            }
            FileStream fileStream = File.OpenRead(fileName);

            try
            {
                return(MappingDictionary.ParseText((Stream)fileStream, parser));
            }
            finally
            {
                fileStream?.Close();
            }
        }
        public static MappingDictionary ParseText(
            Stream stream,
            TextMappingParser parser)
        {
            if (parser == null)
            {
                throw new ArgumentNullException(nameof(parser));
            }
            if (parser == null)
            {
                throw new ArgumentNullException(nameof(parser));
            }
            DataSet      dataSet      = new DataSet();
            StreamReader streamReader = new StreamReader(stream);
            DataTable    table        = (DataTable)null;

            try
            {
                while (!streamReader.EndOfStream)
                {
                    string line = string.Format("{0}", (object)streamReader.ReadLine()).Trim();
                    if (!string.IsNullOrWhiteSpace(line))
                    {
                        string tableName;
                        if (parser.ParseTableName(line, out tableName))
                        {
                            table?.AcceptChanges();
                            if (dataSet.Tables.Contains(tableName))
                            {
                                throw new Exception(string.Format("Duplication table name:{0}.", (object)tableName));
                            }
                            table = parser.CreateSchema(tableName);
                            dataSet.Tables.Add(table);
                        }
                        else
                        {
                            if (table == null)
                            {
                                table = parser.CreateSchema(parser.DefaultTableName);
                                dataSet.Tables.Add(table);
                            }
                            DataRow         row       = table.NewRow();
                            Enums.ValueType valueType = parser.ParseTypeFunc == null ? Enums.ValueType.Unknown : parser.ParseTypeFunc(line);
                            object[]        objArray  = new object[4]
                            {
                                parser.DataColumnNameConvertFunc != null ? (object)parser.DataColumnNameConvertFunc(line) : (object)line,
                                (object)line,
                                (object)string.Format("[{0}]", (object)line),
                                (object)valueType.ToString()
                            };
                            row.ItemArray = objArray;
                            table.Rows.Add(row);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                table?.AcceptChanges();
                dataSet.AcceptChanges();
            }
            finally
            {
                streamReader?.Close();
            }
            return(new MappingDictionary(parser.MappingConvertFunc, dataSet)
            {
                DataColumnConvertFunc = parser.DataColumnConvertFunc
            });
        }