我正在尝试在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;
}
}
}
当我执行插入并尝试从存储中获取数据时,列表始终为null。 azure可以不反序列化枚举列表吗?
答案 0 :(得分:2)
这是一个简单的解决方法(类似于我所做的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,如果您愿意支持这个想法并对其进行投票,那么就会有所帮助。
答案 1 :(得分:1)
使用Windows Azure存储客户端库存储实体时,无法序列化List对象。但是,您可以通过覆盖TableEntity.ReadEntity和TableEntity.WriteEntity方法来自定义实体的序列化行为。这也允许您调用基本实现来使用内置的序列化器/反序列化器并添加对List类型的支持。