0

次のVB6コードをc#4.0に変換するのに問題がありますか?この関数は、OracleデータベースからBLObを取得し、それをバイトに変換します。この例で不要なコードを削除すると、次のようになります...

Function tempFunc(Data as Variant) as byte()

    tempFunc = StrConv(Data, vbUnicode)

End Function

関数をc#に変換した後...

byte[] tempFunc(object data) 
{ 
    ...code...
}

内側の線を変換しようとしましたが、問題が発生しました...

Microsoft.VisualBasic.Strings.StrConv(data, VBStrConv.???);

VBStrConv列挙型にUnicode等価フラグはもうありません...他のいくつかの例を調べて、これを見つけました...

byteData = System.Text.Encoding.UTF8.GetBytes(data); 

ただし、これは文字列を使用するため、役に立ちません...メモリストリームを使用して別の例を見つけましたが、それを変換するには、データベースの元のBLObには存在しないメタデータが必要になります。

誰かアイデアはありますか?

4

1 に答える 1

1

使用できますBinaryFormatter

private byte[] tempFunc(object obj) 
{
    if(obj == null)
        return null;
    BinaryFormatter bf = new BinaryFormatter();
    MemoryStream ms = new MemoryStream();
    bf.Serialize(ms, obj);
    return ms.ToArray();
}
于 2012-10-11T09:02:57.777 に答える