Ich erzeuge in C# eine Klasse, die einige Felder hat, die in den Geo-Informatik-Paketen GDAL bzw. OGR (NuGet) definiert sind, nämlich "DataSource" und "Layer". Ich möchte nun eine Instanz dieser Klasse serialisieren. Ich habe es schon mit einigen Serialisierern probiert (JSON, XmlSerializer, BinaryFormatter, System.Runtime.Serialization und DataContractSerializer). Ich komme aber nicht weiter, weil die GDAL- bzw. OGR-Klassen entweder nicht als [Serializable] markiert sind oder keinen parameterless constructor verwenden. Meine eigenen Felder kann ich ja soweit zurechtklöppeln, aber an die Klassen aus den Packages komme ich entweder gar nicht dran, oder ich mache mir damit die Kompatibilität nach außen hin kaputt.
Hat da jemand nen heißen Tipp? Hier mal ein Minimalbeispiel:
/edit: Irgendwie wird der Code automatisch so komisch formatiert. Kann man das irgendwie verhindern?
Hat da jemand nen heißen Tipp? Hier mal ein Minimalbeispiel:
C#:
// clang-format off
using OSGeo.GDAL;
using OSGeo.OGR;
using System.IO;
using System.Runtime.Serialization;
namespace MyProj
{
public class Shapefile
{
public string sFilename;
public int firstLayer = 0;
public Boolean Loaded = false;
public DataSource ds;
public Layer Layer;
// Irgendwelcher Mist
}
public class Program
{
static async Task Main(string[] args)
{
Shapefile TestShapeFile = new Shapefile();
TestShapeFile.sFilename = "C:/Temp/MyShape.shp";
Boolean LoadSuccess = TestShapeFile.LoadShapeFile(TestShapeFile.sFilename);
Console.WriteLine("Shapefile loaded successfully: {0}", LoadSuccess);
DataContractSerializer ser = new DataContractSerializer(typeof(Shapefile))
FileStream writer = new FileStream("C:/Temp/Test.dta", FileMode.Create);
ser.WriteObject(writer, TestShapeFile);
//...
/edit: Irgendwie wird der Code automatisch so komisch formatiert. Kann man das irgendwie verhindern?
Zuletzt bearbeitet: