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[]usingに変換Protobuf-netし、それを Windows Azure ストレージにシリアル化し、逆シリアル化してこれらの CLR オブジェクトに戻したいと考えています。どうすればこれを達成できますか?

このチュートリアルに従いましたが、 byte[]. byte[]テーブルにa を書き込む方法がわかりません。

質問が明確でない場合は、さらに明確にするよう努めますのでお知らせください。

4

2 に答える 2

0

TableEntity を使用した Azure ストレージは完全なフレームワークです。両方を同時にやろうとすると問題があると思います。おそらく、2つのことを分離します。例えば:

public class Person { // note no base class
    //...
}

これを MemoryStream 経由でシリアル化して byte[] を取得します (maojg は GetBuffer() ではなく ToArray() を必ず使用してください)。

次に、個別に:

public class PersonBlob : TableEntity {
    public byte[] Data {get;set;}
}

(ここでジェネリックを使用して、すべての型を一度にサポートすることもできるかもしれませんが、確かなことはわかりません)。

ToPerson / FromPerson ユーティリティ メソッドを追加して、2 つの間を移動することもできます。

使い道は?

于 2013-08-24T17:06:09.990 に答える