2012-03-10 1 views
0

Я написал код, чтобы получить последний из TFS, используя клиентские API. Я хотел бы получить информацию о прогрессе, и я понимаю, что можно использовать свойства «Total» и «Current» of GettingEventArgs. Но эти свойства не отображаются во время разработки, но отображаются только во время выполнения (см. Рисунок ниже). Но событие во время выполнения, я не могу получить их, используя отражение, как показано ниже.TFS Получить последний код - свойства GetEventArgs '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); 
    } 

Это не находит собственность, и я получаю ссылку Null на «GetProperty». Я надеюсь, что синтаксис верен.

Properties in quickwatch

Любые мысли о том, как достать эти значения свойств?

+0

Я понял, что модификаторы доступа означают, что свойства являются «внутренними». Мне интересно, почему для них нет «общедоступных» или «доступных» эквивалентов. Все еще не нашли способ показать «процентный прогресс» ... – Lalman

+0

Это оказалось довольно просто, чего я никогда раньше не использовал. Флаги привязки разрешают доступ к внутреннему/частному или любому виду собственности. См. Ответ на [этот вопрос] (http://stackoverflow.com/questions/9667654/c-sharp-internal-properties-readable-in-quickwatch-but-not-using-reflection) – Lalman

ответ

1

Ошибка: Состояние GettingEventArgs = (GettingEventArgs) e;. Вы, вероятно, знаете

OperationStatus status = e.Status; 
+0

Nikola, OperationStatus показывает только текущий статус, например «Получение», но не обеспечивает способ получения «процента прогресса». GettingEventArgs, тогда как имеет свойства «Total» и «Current», но они «внутренние». Кажется, я не нашел ничего, что могло бы обеспечить общий/текущий или процентный прогресс. Я поднял это из-за этого (http://social.msdn.microsoft.com/Forums/eu/tfsversioncontrol/thread/ddd3db8e-54ca-4841-8195-e64e3242b991?prof=required) Запрос в блоге MSDN, в котором говорится: «Это возможно " – Lalman

+0

Поскольку текущие и итоговые данные не являются общедоступными, вам необходимо [вызвать эту перегрузку GetProperty()] (http://msdn.microsoft.com/en-us/library/zy0d4103.aspx) на e. –