UTF8でXMLを出力する際に必ずBOM無しにする

.NETクライアントからXMLをサーバ上のTomcatに送信するためには、Javaと互換性を保つためUTF8で出力する場合はいつもBOM無しにしなくちゃならない。

例えば、引数にストリームと対象のエンコーディングを指定することでXMLをストリームに書き出すメソッドがあったとすると

public void WriteXML(Stream stream, Encoding encoding)
{
   :
   :
    //UTF8の場合、BOM無しを使う
    XmlTextWriter wr = ( encoding is UTF8Encoding )
        ? new XmlTextWriter(new BufferedStream(stream), new UTF8Encoding(false))
        : new XmlTextWriter(new BufferedStream(stream), encoding);
   :
   :
}

とUTF8の場合は決め打ちでBOM無しのUTF8に挿げ替える必要があるわけだ。
出力はこれで良いはずだが、はて、入力はどうするんだろう。XmlReaderはエンコーディングの指定は無いんだが、内部で勝手にBOMの有無を判定しているのだろうか。

追記:

>XmlReaderはエンコーディングの指定は無いんだが、内部で勝手にBOMの有無を判定しているのだろうか。
ソースが無いのでなんともいえないが、これは恐らく'Yes'だと思う。XmlReaderの実装クラスのコンストラクタ、又は初期化処理中にストリームを先読みしてエンコーディングを検出していると思われる。