0

私はこのサンプルクラスを持っています:

パブリッククラステスト
{{
        プライベートObjectId_mongoID;
        プライベートA_a= new A();
        private ArrayList _alData = new ArrayList(); //Bオブジェクトの配列リスト
        #endregion

        public Test(A a、ArrayList alData)
        {{
            _a = a;
            _alData = alData;
        }

        [BsonId]
        public ObjectId MongoID
        {{
            得る;

            セットする;
        }

        パブリックA
        {{
            得る
            {{
                return _a;
            }
        }

        public Array dta
        {{
            得る
            {{
                return _alData.ToArray();
            }
        }
}

私はこの結果が欲しいです:

{"_id":ObjectId( "000000000000000000000000")、 "_a":{Aメンバー}、 "dta":[{Bメンバー}、{Bメンバー}]}

どのようにできるのか ?

ありがとう

4

1 に答える 1

1

このクラスは読み取り専用で不変です。それはあなたの意図ですか?もしそうなら、以下はあなたが求めていることを達成するための最良の方法です。これを機能させるには、少なくともドライババージョン1.4.1を使用する必要があり、データベースからこのクラスを読み取ることはできません。これは、プロパティの読み取り専用の性質のためにのみ永続化されます。

public class Test
{
  private A _a;
  private ArrayList _alData;

  [BsonId]
  public ObjectId Id { get; set;}

  [BsonElement("_a")]
  public A A { get { return _a; } }

  [BsonElement]
  public Array dta { get { return _alData.ToArray(); } }
}
于 2012-04-24T12:30:30.707 に答える