質問
トークンの解析を扱うC#で記述したいくつかのメソッドを文書化しています。システムの他の領域におけるいくつかの技術的な制約により、これらのトークンはXML要素(つまり、<tokenName />
)の形式を取る必要があります。これらのトークンの形式を要約ステートメント自体に入れたいと思います。
ただし、これによりエラーがスローされます:不正な形式のXML-名前が無効な文字で開始されました<!> quot;。 C#サマリーコメントにXMLを埋め込むために使用できるエスケープ文字シーケンスはありますか?
解決
標準のXMLエスケープを使用します。例:
<summary>This takes a <token1> and turns it into a <token2></summary>
コードとして入力または読み取るのは非常に簡単ではありませんが、IntelliSenseはこれを適切にエスケープし、ツールチップに正しい読み取り可能なものが表示されます。
他のヒント
CDATAセクションを使用します。例:
<![CDATA[ <name>Bob</name> ]]>
これは、XMLピースが大きい場合にエンティティ参照の特殊文字をエンコードするよりも、ソースでよりエレガントで読みやすいです。
埋め込みたいXML自体にCDATAセクションが含まれている場合、スタックオーバーフローに関する別の回答で説明されているように、複数のCDATAセクションを使用する必要がありますまたは Wikipedia で。または、ここの他の回答で説明されているように、常にプレーンエンティティ参照を使用できます。
VisualStudiosのツールチップにはCDATAセクション内にあるものは表示されないため、エスケープシーケンスを使用します。
非常に遅いですが、同じ問題に遭遇しました。<![CDATA[]]>
を使用すると、Intellisenseでコメントが非表示になります。
<
と>
の両方を置き換えることは、私にとっては大変な作業でした(怠yな:))。 <
を<=>に置き換えるだけでIntellisenseに十分であることがわかりました。これにより、XMLが無効になり、Intellisenseがサマリーブロック内のテキストとして解析するのに適しているためです。
例を次に示します。
/// <summary>
/// Parse the queue process response
/// <para><?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result></para>
/// <![CDATA[
/// <?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result>
/// ]]></summary>
/// <param name="response"></param>
/// <returns></returns>
Intellisenseはこれを表示します:
Parse the queue process response
<?xml version="1.0" encoding="utf-16"?><result success="True"><entity type="resource" operation="update" /></result>