1

如果我有一个用户定义的 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 对象。我怎样才能做到这一点?

我按照教程进行操作,但我遇到了byte[]. 我不知道如何将 a 写入byte[]表格。

如果问题不清楚,请告诉我,我会尝试澄清更多。

4

2 回答 2

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 实用程序方法以在两者之间进行切换。

有什么用?

于 2013-08-24T17:06:09.990 回答
0

我通过创建 CLR 对象的精确副本并让它们从 TableEntity 继承以进行序列化来修复它。

于 2013-08-30T22:01:37.047 回答