1

我不清楚这些语句的用法。我举以下例子

if (!BsonClassMap.IsClassMapRegistered(typeof(Province)))
{
    BsonClassMap.RegisterClassMap<Province>(cm =>
        {
            cm.AutoMap();
            cm.SetIdMember(
            cm.GetMemberMap(c =>
            c.ProvinceId).SetIdGenerator(UniqueIdGenerator.Instance));
            cm.UnmapProperty(c => c.CountryId);
            cm.UnmapProperty(c => c.EloqueraId);
            cm.UnmapProperty(c => c.UpdateMode);
        });
}

最后 2 个属性没有私有字段,但第一个 (CountryId) 有。我有一种感觉,当使用 UnmapProperty 时,私有字段不会被忽略,我应该更好地使用 UnmapMember ???

请有人更深入地解释如何处理这些陈述?或者给我提示在哪里可以找到它?谢谢

4

2 回答 2

0

UnmapMember找到与System.Reflection.MemberInfo对应的BsonMemberMap并删除它的映射。

UnmapField和UnmapProperty都只采用字段或属性名称,将其解析为System.Reflection.MemberInfo并调用UnmapMember

在某种程度上,UnmapField 和 UnmapProperties 是 UnmapMember 的语法糖,它们通过字段或属性字符串名称为您进行反射。

于 2013-02-25T16:52:14.630 回答
0

要初始化类映射,您可以:

  1. 为您要序列化的每个成员调用 MapMember
  2. 或调用 AutoMap 并让它自动找到成员

如果您希望对大多数成员进行序列化,但不是对所有成员进行序列化,有时调用 AutoMap 然后取消映射您不希望序列化的成员会更容易(而不是为想要序列化的所有成员调用 MapMember )。

于 2013-03-05T04:27:21.233 回答