2013-06-22 5 views
1

У меня возникли проблемы с поиском, как написать эту коллекцию в файл. У меня есть следующие классынаписать IEnumerable <IEnumerable <Point>> file

public static class GeoPolyLines 
{ 
    public static ObservableCollection<Connections> connections = new ObservableCollection<Connections>(); 
} 

public class Connections 
{ 
    public IEnumerable<IEnumerable<Point>> Points { get; set; } 

    public Connections(Point p1, Point p2) 
    { 
     Points = new List<List<Point>> 
     { 
       new List<Point> 
       { 
        p1, p2 
       } 
     }; 
    } 

} 

, а затем кучу вещей, как это:

GeoPolyLines.connections.Add(new Connections(new Point(GeoLocations.locations[0].Longitude, GeoLocations.locations[0].Latitude), new Point(GeoLocations.locations[1].Longitude, GeoLocations.locations[1].Latitude))); 

Так GeoPolyLines.connections будет в конечном итоге иметь кучу разных мест, которые я хочу, чтобы затем выписать а. txt, чтобы сохранить и перезагрузить, если нужно. Но я не знаю, как это сделать. У меня есть что-то вроде этого:

using (StreamWriter sw = new StreamWriter(filename)) 
{ 
    var enumerator = GeoPolyLines.connections.GetEnumerator(); 

    while (enumerator.MoveNext()) 
    { 

    } 
    sw.Close(); 
} 

ответ

3

использовать сериализацию.

Чтобы записать в файл

var serializer = new JavaScriptSerializer(); 

File.WriteAllText(filename, serializer.Serialize(points)); 

и читать из файла

var points = serializer.Deserialize<List<Point>>(File.ReadAllText(filename)); 
+0

Я еще Noobie, но от того, что я читал вчера сериализации не работает для статических классов. Но будет ли это работать? –

+1

@jimjohnjim 'Connections' не является статическим классом. Вы можете сериализовать «GeoPolyLines.connections» с помощью одной строки кода. 'serializer.Serialize (GeoPolyLines.connection)' – I4V

+0

Я получаю сообщение об ошибке, что он не может быть сериализован, потому что он не содержит конструктор без параметров. –