如果我有一个用户定义的CLR对象都继承自TableEntity,例如这些CLR:
public class Person : TableEntity
{
public string FirstName { get; set; }
public string Prefix { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public Address Address { get; set; }
public List<string> AList { get; set; }
public List<Urls> ListUrls { get; set; }
}
public class Address : TableEntity
{
public string Street { get; set; }
public string Zipcode { get; set; }
public string HouseNumber { get; set; }
public string City { get; set; }
}
public class Urls : TableEntity
{
public Uri Real { get; set; }
public Uri Fake { get; set; }
}
注意:我知道属性和类必须使用Protobuf-net
的属性进行修饰。但为了保持简单,我暂时将它们排除在外。
我想使用byte[]
将其转换为Protobuf-net
并将其序列化为Windows Azure存储,并将其反序列化为这些CLR对象。我怎么能做到这一点?
我遵循了this教程,但我遇到了byte[]
。我不知道如何只在桌子上写byte[]
。
如果问题不明确,请告诉我,我会尝试更清楚。
答案 0 :(得分:0)
使用TableEntity的Azure存储是一个完整的框架。我建议尝试同时做两件事都是有问题的。也许将这两件事分开。例如:
public class Person { // note no base class
//...
}
现在通过MemoryStream序列化以获取你的byte [](maojg肯定使用ToArray(),而不是GetBuffer())。
然后分开:
public class PersonBlob : TableEntity {
public byte[] Data {get;set;}
}
(你甚至可以在这里使用泛型来同时支持所有类型,但我不确定)。
你也可以添加ToPerson / FromPerson实用程序方法,以便在两者之间进行。
有用吗?
答案 1 :(得分:0)
我通过创建CLR对象的精确副本来修复它,并使它们继承自TableEntity以进行序列化。