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

クラス マップを初期化するには、次のいずれかを実行できます。

  1. シリアル化するメンバーごとに MapMember を呼び出します
  2. またはAutoMapを呼び出して、メンバーを自動的に見つけさせます

すべてではなくほとんどのメンバーをシリアル化する必要がある場合は、AutoMap を呼び出してから、シリアル化したくないメンバーのマップを解除する方が簡単な場合があります(シリアル化するすべてのメンバーに対して MapMember を呼び出すのとは対照的です)。

于 2013-03-05T04:27:21.233 に答える
0

UnmapMemberは、 System.Reflection.MemberInfoに対応するBsonMemberMapを見つけ、そのマッピングを削除します。

UnmapFieldUnmapPropertyはどちらも、フィールドまたはプロパティの名前だけを取り、それをSystem.Reflection.MemberInfoに解決して、 UnmapMemberを呼び出します。

ある意味では、UnmapField と UnmapProperties は UnmapMember のシンタックス シュガーであり、フィールドまたはプロパティ文字列名によってリフレクションを行います。

于 2013-02-25T16:52:14.630 に答える