最近、C# と ActiveMQ を (Apache.NMS ライブラリ経由で) 使用しているときに、次のプロパティに出くわしました。ActiveMQBytesMessage
public new byte[] Content
{
  get
  {
    byte[] buffer = (byte[]) null;
    this.InitializeReading();
    if (this.length != 0)
    {
      buffer = new byte[this.length];
      this.dataIn.Read(buffer, 0, buffer.Length);
    }
    return buffer;
  }
  ..(setter omitted)
}
InitialiseReadingメソッドは、アクティブな MQ から.dataInフィールドへのデータの接続とストリーミングを処理しました。問題は、ITが毎回これを行ったことです。そして、そのデータが読み取られると、二度と読み取ることができず、dataIn フィールドはゼロになってリセットされました。したがって、単にプロパティを観察して再度観察するだけで、データが失われます。これにより、次のような非常に奇妙なバグが発生しました。
byte [] myBytes = new byte[msg.Content.Length]; 
//Touched the property. Data read in.
msg.Content.CopyTo(myBytes,0); 
//Uh oh! touched it again, copying a zero'd array.
または、デバッグ中にウォッチ変数をプロパティに固定したり、誤ってマウスをプロパティの上に置いたりした場合。
この種のメカニズムは、ストリーミングされたデータのプロパティを使用する方法として受け入れられているか、または普及していますか?