Gibt es eine Möglichkeit, einen benutzerdefinierten Serializer für alle Typen festzulegen, die von einem bestimmten Basistyp erben?Festlegen von benutzerdefiniertem MongoDB BsonSerializer für alle Klassen, die vom Basistyp erben
folgende Typen Gegeben:
class Identity<T> {
T Value { get; set; }
}
class StringIdentity : Identity<string> {
}
class PersonIdentity : StringIdentity {
}
Mit folgendem Modell:
class Person {
public PersonId Identity { get; set; }
}
Und die folgenden Serializer:
class StringIdentitySerializer : IBsonSerializer<StringIdentity>
{
object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
return Deserialize(context, args);
}
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, StringIdentity value)
{
context.Writer.WriteString(value.Value);
}
public StringIdentity Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
return new StringIdentity(context.Reader.ReadString());
}
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
{
Serialize(context, args, value as StringIdentity);
}
public Type ValueType => typeof(StringIdentity);
}
ich dachte, dass BsonSerializer.RegisterSerializer(typeof(StringIdentity), new StringIdentitySerializer());
mein Eigentum Serialisierung würde Id
auf Person
als ein Zeichenfolge.
Dieser Serializer funktioniert, wenn ich die Id
Eigenschaft ändern, um vom Typ StringIdentity
zu sein.
Ich verstehe, warum dies geschieht (PersonIdentity
ist nicht die gleiche Art wie StringIdentity
), aber (ohne die Person
Klasse Dekoration), wie würde ich die Eigenschaft Id
vom Typ PersonIdentity
auf meiner Person
Klasse mit diesem Serializer zu serialisiert?
[jira.mongodb.org] (https://jira.mongodb.org/secure/Dashboard.jspa) - bitte fragen Sie dort – profesor79
Nein, wir wollen keine Fragen wie diese in Jira. Ich werde hier antworten. –