C#MongoDB未序列化System.Security.Claims.Claim

Jam*_*ley 1 c# mongodb mongodb-.net-driver

我似乎无法序列化Claim-我在做什么错?使用此方法的其他对象序列化工作正常。

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);
Run Code Online (Sandbox Code Playgroud)

结果

一个对象被插入到MongoDB中,但除了_id设置/填充外,别无其他。

在此处输入图片说明

使用.NET Core 2.0.x和MongoDB.Driver 2.5.0。

更新1

手动映射成员似乎有效;只是在自动映射时,它似乎失败了。

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));
});
Run Code Online (Sandbox Code Playgroud)

Jam*_*ley 5

Claim类必须因无参数的构造函数并没有公开制定者可以手动映射。

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));
});
Run Code Online (Sandbox Code Playgroud)