2012-03-10 66 views
0

我已經編寫了使用客戶端API從TFS獲取最新內容的代碼。我希望更新進度,並且我明白可以使用GettingEventArgs的「總計」和「當前」屬性。但是這些屬性在設計時不可見,但僅在運行時可見(請參見下圖)。但是在運行時事件,我無法使用反射來獲取它們,如下所示。TFS獲取最新代碼 - GettingEventArgs屬性'Total'和'Current'不可見

static void versionControl_Getting(object sender, GettingEventArgs e) 
    { 
     GettingEventArgs status = (GettingEventArgs)e; 

     int curr = (int)status.GetType().GetProperty("Current").GetValue(status, null); 
     int tot = (int)status.GetType().GetProperty("Total").GetValue(status, null); 
    } 

這沒有找到屬性,我得到一個「GetProperty」的空引用。我希望語法是正確的。

Properties in quickwatch

如何獲得這些屬性值的保持有什麼想法?

+0

我發現訪問修飾符意味着屬性是「內部的」。我想知道爲什麼沒有這些「公共」或「可訪問」等價物。仍然沒有找到一種方法來顯示「百分比進度」... – Lalman 2012-03-12 12:05:04

+0

結果很簡單,我以前從未使用過。綁定標誌允許訪問內部/私人或任何類型的財產。查看答案[這個問題](http://stackoverflow.com/questions/9667654/c-sharp-internal-properties-readable-in-quickwatch-but-not-using-reflection) – Lalman 2012-03-22 05:11:13

回答

1

有一個錯誤GettingEventArgs status =(GettingEventArgs)e;。您可能需要

OperationStatus status = e.Status; 
+0

尼古拉,OperationStatus只顯示目前的狀態如「正在進行」,但沒有提供獲得「百分比進度」的方法。 GettingEventArgs,而屬性「總計」和「當前」,但他們是「內部」。我似乎沒有找到任何可以提供總體/當前或百分比進展的東西。我提出這是因爲這個(http://social.msdn.microsoft.com/Forums/eu/tfsversioncontrol/thread/ddd3db8e-54ca-4841-8195-e64e3242b991?prof=required)MSDN博客查詢說,「這是可能的「 – Lalman 2012-03-12 11:58:07

+0

由於Current和Total未公開,您需要在e上調用GetProperty()的重載(http://msdn.microsoft.com/en-us/library/zy0d4103.aspx)。 – 2012-03-12 12:23:35