jestem próby zapisu „MojaKlasa” poniżej do kolekcji Mongo:Serializować słownika w „Document” reprezentacji, gdy klucz jest enum
public enum MyEnum { A, B, C };
public class MyClass
{
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
public string Id { get; set; }
[BsonDictionaryOptions(DictionaryRepresentation.Document)]
public Dictionary<MyEnum , MyOtherClass> Items { get; set; }
}
public class MyOtherClass
{
public string MyProp { get; set; }
}
Chciałbym serializacji to za dokument , ponieważ jest to najbardziej zwięzły przedstawienie:
{
_id: "12345",
Items: {
A: {
MyProp: "foo"
},
B: {
MyProp: "bar"
},
C: {
MyProp: "baz"
},
}
}
silnik Mongo zgłasza wyjątek serializacji:
Podczas używania DictionaryRepresentation.Document key values musi serializować jako ciągi.
Więc pomyślałem, że może mógłbym zarejestrować konwencję, aby teksty stałe serializowania jako ciągi:
var conventions = new ConventionPack();
conventions.Add(new EnumRepresentationConvention(BsonType.String));
ConventionRegistry.Register("Custom Conventions", conventions, type => type == typeof(MyClass));
Niestety, ten wydaje się mieć żadnego wpływu, a silnik rzuca ten sam wyjątek.
Czy istnieje jakiś sposób, aby szeregować słownika w reprezentacji dokumentu, gdy klucz jest typu enum?
Chcesz serializacji 'MyEnum' jako ciąg tylko w tym konkretnym przypadku? czy wszędzie? – i3arnon
@ I3arnon albo jest w porządku. – McGarnagle