2014-10-31 119 views
0

簡單的問題,你怎麼一個BsonValue的默認值設置爲空列表BsonDefaultValue設置爲空列表

[BsonElement("Networks")] 
    [BsonRepresentation(BsonType.String)] 
    [BsonIgnoreIfNull] 
    [BsonDefaultValue(new List<SocialProfileTypes>() { })] 
    [BsonIgnoreIfDefault] 
    public UniqueList<SocialProfileTypes> Networks 
    { 
     get { return networks; } 
     set { networks = value; } 
    } 

由於[BsonDefaultValue(new List<SocialProfileTypes>() { })]給出了一個語法錯誤

Error 8 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type 

回答

0

這是一個C#語言的約束。屬性中的值必須是編譯時間常量。

至於MongoDB的驅動程序,你需要使用代碼來設置這樣的值(注:沒有編譯這一點,但是這將是相似的)

BsonClassMap.RegisterClassMap<MyClass>(cm => 
    cm.AutoMap(); 
    cm.MapMember(x => x.Networks).SetDefaultValue(new List<SocialProfileTypes>()) 
}); 

我相信這是怎麼回事無論如何因爲List沒有實現或從UniqueList繼承,所以你也必須解決這個問題。

+0

抱歉,關於唯一列表中的混淆我想將該部分抽象出來,因此我將其替換爲列表。唯一列表是列表中的直接後代,因此它應該可以工作。我會嘗試一下 – MrX 2014-10-31 12:54:29