看起来这非常简单,但我正在努力寻找我需要的东西。
我正在实现一个 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= ???
}
Note:该代码已被精简为简单的框架,以便更容易阅读并专注于手头的问题。
我找到了一种方法来做到这一点。它不像我想要的那么优雅,但它确实有效。如果有人有更好的答案,我绝对感兴趣。
这是对有相同问题的其他人有利的方法。
您可以从以下位置获取工作项的 ID:CoreFields.IntegerFields
收集于notificationEventArgs
(类型WorkItemChangedEvent
)传递到事件处理程序中。使用它你可以获得WorkItem
来自WorkItemStore
's GetWorkItem
method.
注意:您想要的项目的字段名称为“ID”,并且看起来它始终是集合中的元素 0,但我不相信这总是正确的,因此我使用 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)