質問

トークンの解析を扱うC#で記述したいくつかのメソッドを文書化しています。システムの他の領域におけるいくつかの技術的な制約により、これらのトークンはXML要素(つまり、<tokenName />)の形式を取る必要があります。これらのトークンの形式を要約ステートメント自体に入れたいと思います。

ただし、これによりエラーがスローされます:不正な形式のXML-名前が無効な文字で開始されました<!> quot;。 C#サマリーコメントにXMLを埋め込むために使用できるエスケープ文字シーケンスはありますか?

役に立ちましたか?

解決

標準のXMLエスケープを使用します。例:

<summary>This takes a &lt;token1&gt; and turns it into a &lt;token2&gt;</summary>

コードとして入力または読み取るのは非常に簡単ではありませんが、IntelliSenseはこれを適切にエスケープし、ツールチップに正しい読み取り可能なものが表示されます。

他のヒント

CDATAセクションを使用します。例:

<![CDATA[ <name>Bob</name> ]]>

これは、XMLピースが大きい場合にエンティティ参照の特殊文字をエンコードするよりも、ソースでよりエレガントで読みやすいです。

埋め込みたいXML自体にCDATAセクションが含まれている場合、スタックオーバーフローに関する別の回答で説明されているように、複数のCDATAセクションを使用する必要がありますまたは Wikipedia で。または、ここの他の回答で説明されているように、常にプレーンエンティティ参照を使用できます。

VisualStudiosのツールチップにはCDATAセクション内にあるものは表示されないため、エスケープシーケンスを使用します。

非常に遅いですが、同じ問題に遭遇しました。<![CDATA[]]>を使用すると、Intellisenseでコメントが非表示になります。

<>の両方を置き換えることは、私にとっては大変な作業でした(怠yな:))。 &lt;を<=>に置き換えるだけでIntellisenseに十分であることがわかりました。これにより、XMLが無効になり、Intellisenseがサマリーブロック内のテキストとして解析するのに適しているためです。

例を次に示します。

/// <summary>
/// Parse the queue process response
/// <para>&lt;?xml version="1.0" encoding="utf-16"?>&lt;result success="True">&lt;entity type="resource" operation="update" />&lt;/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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top