MongoDb命名空间下的所有类如何注册ClassClassMap?MongoDB驱动程序教程建议通过BsonClassMap.RegisterClassMap()将类映射注册到自动映射;我想自动化给定命名空间的所有类,而不是为每个类显式写下RegisterClassMap。这目前可能吗?你不需要写BsonClassMap.RegisterClassMap();因为默认情况下所有课程都会自动进行。当您需要自定义序列化时,您应该使用RegisterClassMap:BsonClassMap.RegisterClassMap(cm=>{cm.AutoMap();cm.SetIdMember(cm.GetMemberMap(c=>c.SomeProperty));});您还可以使用属性来创建托管序列化(它看起来更适合我):[BsonId]//将属性标记为_id[BsonElement("SomeAnotherName",Order=1)]//设置属性名称,顺序[BsonIgnoreExtraElements]//在反序列化过程中忽略额外的元素[BsonIgnore]//在插入时忽略属性您还可以创建在自动化过程中使用的全局规则,如下所示:varmyConventions=newConventionProfile();myConventions.SetIdMemberConvention(newNoDefaultPropertyIdConvention());BsonClassMap.RegisterConventions(myConventions,t=>true);我只是使用属性和约定来管理序列化过程。希望这可以帮助。作为基于约定的注册的替代方案,我需要使用一些自定义初始化代码为大量Type注册一个类映射,并且不想为每个类型重复RegisterClassMap。根据KCD的评论,如果您需要显式注册类映射,如果您需要反序列化多态类层次结构,则可以使用BsonClassMap.LookupClassMap,它将为给定类型创建默认的AutoMapped注册。但是,为了执行自定义地图初始化步骤,我需要求助于此hack,不幸的是LookupClassMap在退出时冻结了地图,这阻止了对返回的BsonClassMap的进一步更改:vartype=typeof(MyClass);varclassMapDefinition=typeof(BsonClassMap);varclassMapType=classMapDefinition.MakeGenericType(类型);varclassMap=(BsonClassMap)Activator.CreateInstance(classMapType);//在这里做自定义初始化,egclassMap.SetDiscriminator,AutoMapetcBsonClassMap.RegisterClassMap(classMap);上面的代码改编自BsonClassMapLookupClassMap实现。以上就是C#学习教程:如何为MongoDb命名空间中的所有类注册ClassClassMap?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: