1

我正在尝试将枚举对象列表存储在 Azure 表存储中,但是当 azure 插入它时,列表的值为 null。

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;
        }
    }
} 

当我进行插入并尝试从存储中取回数据时,列表始终为空。天蓝色不能反序列化枚举列表吗?

4

2 回答 2

2

这是一个简单的解决方法(类似于我在这里所做的):

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。同样,我将链接到我打开的用户语音票,这将有助于实现这一点,以防您想支持这个想法并对其进行投票。

于 2015-01-04T22:00:47.800 回答
1

您是对的,使用 Windows Azure 存储客户端库存储实体时无法序列化 List 对象。但是,您可以通过覆盖TableEntity.ReadEntityTableEntity.WriteEntity方法来自定义实体的序列化行为。这也将允许您调用基本实现以使用内置的序列化器/反序列化器并添加对 List 类型的支持。

于 2013-11-04T23:16:22.780 回答