我正在尝试从[{1}}获取所有workitem types
的列表而不访问project collection
中的project
。
我一直试过
我可以使用project collection
对象获取所有workitemType
列表的列表,如下面的代码所示:
project
通过搜索获取 TfsTeamProjectCollection tfctc = new TfsTeamProjectCollection(newUri
("http://servername:8080/tfs/teamprojectcollection"));
WorkItemStore wis = tfctc.GetService<WorkItemStore>();
foreach(Project project in wis.Projects)
{
foreach (WorkItemType type in project.WorkItemTypes)
{
Console.WriteLine(type.Name);
}
}
的列表,我认识TFS中的一个班级为WorkItemTypeCollection。
但在使用它时,我无法使用WorkitemType
获取workitemcollection
的对象。
我尝试过以下代码:
projectCollection
我想做什么
我想在 TfsTeamProjectCollection tfctc = new TfsTeamProjectCollection(newUri
("http://servername:8080/tfs/teamprojectcollection"));
WorkItemTypeCollection witc = tfctc.GetService<WorkItemTypeCollection>(); // here I am getting nil object every time
// some more code
中获取 WorkItemTypes
列表。
任何人都可以帮我这个吗? 如果我错了,请纠正我。 提前谢谢。
答案 0 :(得分:5)
工作项类型与团队项目相关联,因此您只能获取团队项目的工作项类型。这背后的原因是每个团队项目可以有不同的工作项类型集。即使你发现同名的多种类型,例如&#34;任务&#34;或者&#34; Bug&#34;,每个团队项目可能已修改其定义。基本上,所有团队项目的组合工作项类型都是团队项目集的工作项类型。
您找到的WorkItemTypeCollection
类实际上是WorkItemType
个实例的容器。您已使用的Project.WorkItemTypes
属性返回可以迭代的WorkItemTypeCollection
。但是,此类型未注册为服务 - 这就是tfctc.GetService<WorkItemTypeCollection>()
返回null的原因。
因此,您在示例中的嵌套foreach
中所做的实际上是它的工作原理。你可以使用LINQ和SelectMany
来改进它,但是关于它:
var workItemTypes = wis.Projects
.Cast<Project>()
.SelectMany(p => p.WorkItemTypes.Cast<WorkItemType>())
.ToArray();