private static void AddFeaturesToShapeFileFeatureLayer(ShapeFileFeatureLayer shapeFileFeatureLayer, Collection <Feature> features)
        {
            shapeFileFeatureLayer.ReadWriteMode = GeoFileReadWriteMode.ReadWrite;

            shapeFileFeatureLayer.SafeProcess(() =>
            {
                List <string> columnNames = shapeFileFeatureLayer.GetDistinctColumnNames().ToList();
                shapeFileFeatureLayer.FeatureSource.BeginTransaction();
                foreach (var columnName in features[0].ColumnValues.Keys)
                {
                    if (!columnNames.Contains(columnName))
                    {
                        shapeFileFeatureLayer.FeatureSource.AddColumn(new FeatureSourceColumn(columnName, DbfColumnType.Character.ToString(), 100));
                    }
                }
                shapeFileFeatureLayer.FeatureSource.CommitTransaction();

                foreach (Feature feature in features)
                {
                    shapeFileFeatureLayer.EditTools.BeginTransaction();
                    shapeFileFeatureLayer.EditTools.Add(feature);
                    shapeFileFeatureLayer.EditTools.CommitTransaction();
                }
            });
        }