public int GetProjectEnum(uint grfEnumFlags, ref Guid rguidEnumOnlyThisType, out IEnumHierarchies ppenum) { __VSENUMPROJFLAGS flags = (__VSENUMPROJFLAGS)grfEnumFlags; ProjectInfo[] projects; if (flags.HasFlag(__VSENUMPROJFLAGS.EPF_MATCHTYPE)) { var guid = rguidEnumOnlyThisType; projects = _projects.Values.Where(x => x.ProjectGuid == guid).ToArray(); } else if (flags.HasFlag(__VSENUMPROJFLAGS.EPF_ALLPROJECTS)) { projects = _projects.Values.ToArray(); } else { throw new NotImplementedException(); } ppenum = new ProjectEnum(projects); return(VSConstants.S_OK); }