I seem to be unable to serialize Claim
- what am I doing wrong? Other object serializations using this method works fine.
Code
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("TEST");
var collection = database.GetCollection<Claim>("Claims");
var payload = new Claim("name", "value");
collection.InsertOne(payload);
Result
An object gets inserted into MongoDB but nothing other than _id
gets set/populated.
Using .NET Core 2.0.x and MongoDB.Driver 2.5.0.
Update 1
Mapping members manually seems to work; it's just when it's auto-mapped that it seems to fail.
BsonClassMap.RegisterClassMap<Claim>(cm =>
{
cm.SetIgnoreExtraElements(true);
cm.MapMember(c => c.Issuer);
cm.MapMember(c => c.OriginalIssuer);
cm.MapMember(c => c.Properties);
cm.MapMember(c => c.Subject);
cm.MapMember(c => c.Type);
cm.MapMember(c => c.Value);
cm.MapMember(c => c.ValueType);
cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));
});
The Claim
class must be manually mapped due having no parameterless constructor and no public setters.
BsonClassMap.RegisterClassMap<Claim>(cm =>
{
cm.SetIgnoreExtraElements(true);
cm.MapMember(c => c.Issuer);
cm.MapMember(c => c.OriginalIssuer);
cm.MapMember(c => c.Properties);
cm.MapMember(c => c.Subject);
cm.MapMember(c => c.Type);
cm.MapMember(c => c.Value);
cm.MapMember(c => c.ValueType);
cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));
});