3

MongoDB (.NET ドライバー 1.10) を使用して、弱い型指定されたフィールドを持つ C# クラスを格納しています。

public class SomeClass : ...
{
    ...

    public object Value { get; set; }
}

デフォルトでは、Value に配列が含まれている場合、クラスは非常に長い識別子を持つドキュメントにシリアル化されます。

{
    ...

    "Value" : {
        "_t" : "SomeSolution.Domain.SomeSubdomain.SomeFolder.SomeSubfolder.SpecialValueClass[], SomeSolution.Domain",
        "_v" : [ 
            {
                ...
            }, 
            {
                ...
            }, 
            ...
        ]
    }
}

しかし、私は "SpecialValueClass[]" 識別子文字列 (またはそれより短い) だけを使用したいと考えています。

次のようにマッピングを構成しようとしました:

BsonClassMap.RegisterClassMap<SpecialValueClass>();
BsonClassMap.RegisterClassMap<SpecialValueClass[]>(
            cm =>
            {
                cm.AutoMap();
                cm.SetDiscriminator("SpecialValueClass[]");
            });

これは、配列型、ジェネリック リストには影響しません (ただし、ソリューションで定義された型に対しては機能します)。

配列タイプにカスタム識別子を使用するようにmongodbドライバーに指示するにはどうすればよいですか? 私は、ラッパー クラスもシリアライゼーション属性も使用しないことを好みます。または、私の構成がドライバーによって無視されるのはなぜですか?

4

0 に答える 0