2013-06-13 41 views
4

有一個關於C#編譯器生成文檔的問題。可空類型的文檔生成

的源代碼:

public class SomeClass { 
    /// <summary> 
    /// Do some work 
    /// </summary> 
    /// <returns cref="Nullable{Boolean}"> 
    /// Some stuff 
    /// </returns> 
    public bool? SomeMethod() { 
     return false; 
    } 
} 

編譯器生成的方法的someMethod XML文檔片段:

<member name="...." > 
.... 
    <returns cref="T:System.Nullable`1">SomeStuff</returns> 
</member> 

有沒有什麼辦法,迫使它產生

<member name="...." > 
.... 
    <returns cref="T:System.Nullable{System.Boolean}">SomeStuff</returns> 
</member> 

代替?

+1

手動設置返回信息如下: 'cref =「T:System.Nullable {System.Boolean}」>' ? – dna

+0

哦,謝謝!那是行得通的!但是ReSharper生成Cannto解析符號。但我認爲,ReSharper問題 – l0nley

+0

那麼你可以'#pragma警告禁用',但它不是真正的眼睛糖果! – dna

回答

2

不幸的是沒有。

無法更改.xml文件的生成方式。

相反,您將不得不更改處理這些文件以處理該語法的任何內容,或者更改XML文檔。

這裏的問題是Nullable{Boolean}Nullable{T}沒有區別,因爲括號之間的部分不被理解爲類型,而是被理解爲泛型類型參數。 T,Boolean,XYZ,這些都是一樣的。

你將不得不改變讀取這個工具(我不知道你將如何做到這一點),或不同寫出您參考:

/// <returns> 
/// <see cref="Nullable{T}/> with <c>T</c> being <see cref="Boolean"/>. 
/// </returns> 
+0

這聽起來很難過。 – l0nley

1

有關使用

Nullable<bool> 
如何
+0

如果我評論如下:」> - 其錯誤 – l0nley

+0

使用它在哪裏? –

+0

'public Nullable SomeMethod(){}'insted'public bool? SomeMethod(){}' –

0

我使用以下語法:

/// <summary> 
/// Returns the field's value cast into <see cref="int"/>?. 
/// </summary> 
/// ... 
public int? GetNullableInt(string name, int? defaultValue = null) 

這意味着該類型的參考不是100%精確的,但第h強調文檔的工具提示預覽等同於簽名預覽的樣子(彩色int,無色?)。