Mange tak Anton Putau for den enklest mulige løsning.
Men der er en anden. Sådan serialiseres objekter manuelt:
public class MyListAnimalSerializer :SerializerBase>{ public override void Serialize(MongoDB.Bson.Serialization.BsonSerializationContext context, MongoDB.Bson.Serialization.BsonSerializationArgs args, List value) {context. Writer.WriteStartArray(); foreach (Animal mvnt in value) { context.Writer.WriteStartDocument(); switch (mvnt.GetType().Name) { case "Tiger"://din serialisering her pause; case "Zebra"://din serialisering her går i stykker; default:break; } context.Writer.WriteEndDocument(); } context.Writer.WriteEndArray(); } public override List Deserialize(MongoDB.Bson.Serialization.BsonDeserializationContext kontekst, MongoDB.Bson.Serialization.BsonDeserializationArgs args) { context.Reader.ReadStartArray(); Liste resultat =ny Liste(); while (true) { try { //this catch block behøver kun at identificere slutningen af Array-konteksten.Reader.ReadStartDocument(); } catch (Exception exp) { context.Reader.ReadEndArray(); pause; } var type =context.Reader.ReadString(); var _id =context.Reader.ReadObjectId(); var name =context.Reader.ReadString(); if (type =="Tiger") { double tiger_height =context.Reader.ReadDouble(); result.Add(new Tiger() { Id =id, Name =animal_name, Height =tiger_height }); } andet { long zebra_stripes =context.Reader.ReadInt64(); result.Add(return new Zebra() { Id =id, Name =animal_name, StripesAmount =zebra_stripes }); } context.Reader.ReadEndDocument(); } returner resultat; }}
Og bare du skal kommentere feltet IEnumerable for at bruge din serializer:
[BsonSerializer(typeof(MyListAnimalSerializer))]offentlig liste Dyr { get; sæt; }