2013-11-04 100 views
1

我想存儲枚舉對象的列表存儲在Azure表存儲中,但是當azure插入它時,列表的值爲空。在蔚藍表存儲中存儲枚舉列表

public enum ExtractedType 
{ 
    Image, 
    Video 
} 
public class Request : TableEntity 
{ 
    private List<ExtractedType> _ExtractedTypes = new List<ExtractedType>(); 
    public List<ExtractedType> ExtractedTypes 
    { 
     get 
     { 
      return _ExtractedTypes; 
     } 

     set 
     { 
      _ExtractedTypes = value; 
     } 
    } 
} 

當我做一個插入並嘗試從存儲中取回數據時,列表始終爲空。天青沒有反序列化枚舉列表?

回答

1

如果在使用Windows Azure存儲客戶端庫存儲實體時無法序列化List對象,那就對了。但是,您可以通過覆蓋TableEntity.ReadEntityTableEntity.WriteEntity方法來自定義實體的序列化行爲。這也可以讓你調用基本實現來使用內置的序列化器/解串器,並添加對List類型的支持。

+0

你可以在python API中做同樣的事嗎?我將我的列表轉換爲JSON字符串,但不確定這是最好的方法。 –

1

這裏有一個簡單的解決方法(類似於我所做here):

public string ExtractedTypesFlat { get; set; } //for use by the Azure client libs only 
[IgnoreProperty] public List<ExtractedType> ExtractedTypes 
{ 
    get 
    { 
     return ExtractedTypesFlat 
        .Split(',') 
        .Select(s => (ExtractedType)Enum.Parse(typeof(ExtractedType), s)) 
        .ToList(); 
    } 
    set { ExtractedTypesFlat = String.Join(",", value); } 
} 

正如我在另一個線程所提到的,它會如果簡單後盾值可能已被使用,而不是額外的一直不錯公共財產(沒有覆蓋ReadEntity/WriteEntity的麻煩)。再次,我會鏈接到我打開的user voice ticket,如果您想支持這個想法並加以改進,可以方便使用。