看起来这会非常简单,但我正在努力寻找我需要的东西。
我正在实现 TFS 2013 事件处理程序,并且只想获取对引发更改事件的工作项的引用。获得标题似乎很容易,但我在事件签名对象中找不到属性或方法,这些属性或方法为我提供了对 WorkItem 对象的引用或我需要去查询它的信息(例如 ID) .
public EventNotificationStatus ProcessEvent(
TeamFoundationRequestContext requestContext,
NotificationType notificationType,
object notificationEventArgs,
out int statusCode,
out string statusMessage,
out ExceptionPropertyCollection properties)
{
var ev = notificationEventArgs as WorkItemChangedEvent;
string WorkItemTitle = ev.WorkItemTitle; /* easy enough */
/*********** need help with this bit *********/
int ChangedWorkItemID = ???
OR
WorkItem ChangedWorkItem= ???
}
注意:此代码已被精简到最基本的部分,以便于阅读和专注于手头的问题。
最佳答案
我找到了一种方法来做到这一点。它不像我想要的那样优雅,但它确实有效。如果有人有更好的答案,我绝对感兴趣。
以下是对有相同问题的其他人有益的方法。
您可以从 notificationEventArgs
(WorkItemChangedEvent
类型)的 CoreFields.IntegerFields
集合中获取工作项的 ID,并将其传递到事件处理程序.使用它,您可以从 WorkItemStore
的 GetWorkItem
方法中获取 WorkItem
。
注意:您想要的项目的字段名称为“ID”,它似乎始终是集合中的元素 0,但我不相信它总是如此,所以我使用 name 属性搜索LINQ 以防万一。这是整个事件的代码片段。
IntegerField idField = ev.CoreFields.IntegerFields
.Where<IntegerField>(field => field.Name.Equals("ID"))
.FirstOrDefault<IntegerField>();
int WorkItemID= idField.NewValue;
//Assuming you have an initialized WorkItemStore Object here
workItemStore.GetWorkItem(WorkItemID);
关于c# - 如何在工作项更改事件中获取对 TFS 工作项的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28133095/