gpt4 book ai didi

C# MongoDB 没有序列化 System.Security.Claims.Claim

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:13 25 4
gpt4 key购买 nike

我似乎无法序列化 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);

结果

一个对象被插入到 MongoDB 中,但除了 _id 没有被设置/填充。

enter image description here

使用 .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));
});

最佳答案

Claim 类必须手动映射,因为它没有无参数构造函数和公共(public) setter 。

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));
});

关于C# MongoDB 没有序列化 System.Security.Claims.Claim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49821313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com