web-dev-qa-db-ja.com

C#ReadOnlyMemory <byte>をbyte []に​​変換します

指定 ReadOnlyMemory Struct ストリームを文字列に変換したい

私は次のコードを持っています:

var body = ea.Body; //ea.Body is of Type ReadOnlyMemory<byte>
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);

そして、次のエラーが発生します。 .NET CORE 3.1で最新のC#を使用しています

enter image description here

Hello Worldの例を文字通りコピーして貼り付けている RabbitMQと呼ばれる主要製品の でコンパイルできないので、これはおかしいです。

20

RabbitMQ.Clientパッケージを更新したところ、Consumer_Receivedメソッドで同じ問題が発生しました。

_private static void Consumer_Received(object sender, BasicDeliverEventArgs e)
        // Code
_

BasicDeliverEventArgsを確認したところ、BodyがReadOnlyMemoryタイプになっていることがわかりました。
_public ReadOnlyMemory<byte> Body { get; set; }_

ジェフが言ったように RabbitMQはAPIを変更しました なので、これは以前にインターネットで行ったチュートリアルから変更されたと思います。

修正するには、Bodyメッセージを配列(Consumer_Receivedメソッドに)に変換するだけでした:
var message = Encoding.UTF8.GetString(e.Body.ToArray());

0
Isac Moura