2012-03-10 63 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