Drexel
Lt. Commander
- Registriert
- Jan. 2012
- Beiträge
- 1.794
Hallo zusammen,
Zum besseren Verständnis: Ich schreib mir gerade nen Youtube Uploader und habe eine Liste von Videos denen jeweils ein Projekt-Template zugeordnet ist. Videos einer Reihe ist immer das gleiche Template Objekt zugeordnet. Wenn ich das ganze jetzt aber mit JSONSerializer serialisiere und danach wieder deserialisiere, hat jedes Video sein eigenes Template Objekt, die aber alle inhaltsgleich sind. Krieg ich den Deserializer irgendwie dazu, aus dem was vorher nur eine Objektinstanz war bei deserialisieren auch wieder nur eine Objektinstanz zu machen? Oder muss ich es nacher aufräumen oder mit einem Converter oder so eingreifen?
Zum besseren Verständnis: Ich schreib mir gerade nen Youtube Uploader und habe eine Liste von Videos denen jeweils ein Projekt-Template zugeordnet ist. Videos einer Reihe ist immer das gleiche Template Objekt zugeordnet. Wenn ich das ganze jetzt aber mit JSONSerializer serialisiere und danach wieder deserialisiere, hat jedes Video sein eigenes Template Objekt, die aber alle inhaltsgleich sind. Krieg ich den Deserializer irgendwie dazu, aus dem was vorher nur eine Objektinstanz war bei deserialisieren auch wieder nur eine Objektinstanz zu machen? Oder muss ich es nacher aufräumen oder mit einem Converter oder so eingreifen?
Code:
public class Upload
{
private Guid guid;
private string filePath;
private Template template;
...
public Upload()
{
}
public Upload(string filePath)
{
this.guid = Guid.NewGuid();
this.filePath = filePath;
}
public Guid Guid { get => guid; }
public string FilePath { get => filePath; set => filePath = value; }
public Template Template { get => template; set => template = value; }
}
public class Template
{
private Guid guid;
private string name;
...
public Template()
{
}
public Template(string name)
{
this.guid = Guid.NewGuid();
this.name = name;
}
public Guid Guid { get => guid; }
public string Name { get => name; set => name = value; }
}
public class UploadList
{
private List<Upload> uploads;
public List<Upload> Uploads { get => uploads; }
public UploadList()
{
Template t1 = new Template("P1");
Template t2 = new Template("P2");
uploads = new List<Upload>();
uploads.Add(new Upload(@"E:\P1 01.mkv") { Template = t1 });
uploads.Add(new Upload(@"E:\P1 02.mkv") { Template = t1 });
uploads.Add(new Upload(@"E:\P2 01.mkv") { Template = t2 });
uploads.Add(new Upload(@"E:\P2 02.mkv") { Template = t2 });
uploads.Add(new Upload(@"E:\P2 02.mkv") { Template = t2 });
uploads.Add(new Upload(@"E:\P1 03.mkv") { Template = t1 });
if(uploads[0].Template == uploads[1].Template)
{
//true
}
JsonSerializerOptions options = new JsonSerializerOptions();
options.WriteIndented = true;
options.Converters.Add(new JsonStringEnumConverter());
string jsonString;
jsonString = JsonSerializer.Serialize(uploads, options);
File.WriteAllText(@"d:\uploads.json", jsonString);
List<Upload> uploads2 = JsonSerializer.Deserialize<List<Upload>>(jsonString);
if (uploads2[0].Template == uploads2[1].Template)
{
//false
}
}
}
}
Zuletzt bearbeitet: