Windows Mobile で C# を使用して byte[] を ArrayList に変換する方法を教えてください。
後で編集:
これは、カスタム型のインスタンスを含む ArrayList を持つようなものです。このリストは、バイト配列としてデータベースに (blob に) 送信されます (変換はデータベース API によって行われます)。私が望むのは、byte[] を ArrayList; に戻すことです。
.NET CF は BinaryFormatter を提供しません。
Windows Mobile で C# を使用して byte[] を ArrayList に変換する方法を教えてください。
後で編集:
これは、カスタム型のインスタンスを含む ArrayList を持つようなものです。このリストは、バイト配列としてデータベースに (blob に) 送信されます (変換はデータベース API によって行われます)。私が望むのは、byte[] を ArrayList; に戻すことです。
.NET CF は BinaryFormatter を提供しません。
すべての配列は ICollection を継承するため、そのまま使用できます
ArrayList list = new ArrayList(bytearray);
ただし、配列内の各バイト値のボックス化を防ぐため、同じメソッドを使用してジェネリック List<byte> を自分で使用します。配列はそれぞれの型のジェネリック IList を静的に継承しませんが、CLR は実行時に各配列インスタンスに関連する実装を追加します (ここの重要な注意事項を参照してください) 。
これしかできないの?
ArrayList list = new ArrayList(byteArray);
ArrayList は型指定されていないため、互換性のためにのみ使用する必要があります。
List<byte> を使用することをお勧めします。
var list = new List<byte>(byteArray);
編集: データベース API が変換を行う場合、デシリアライズする方法を提供するべきではありませんか? Reflector を使用して、変換がどのように行われるかを確認してください。
CFはサポートしていないようBinaryFormatter
です。そのバイナリ データを送信しているコンポーネントを制御していますか? そのコンポーネントでデータを Xml に変換できませんか? そうでない場合は、コンパクトフォーマッターを見てください