EnvDTE.Client/Impl/ProjectModelImpl/SolutionFolderProjectItemImplementation.cs (44 lines of code) (raw):
using EnvDTE;
using JetBrains.Annotations;
using JetBrains.EnvDTE.Client.Util;
using JetBrains.Rider.Model;
namespace JetBrains.EnvDTE.Client.Impl.ProjectModelImpl;
public class SolutionFolderProjectItemImplementation(
[NotNull] DteImplementation dte,
[NotNull] ProjectItemModel projectItemModel,
[NotNull] ProjectImplementation containingProject)
: ProjectItemImplementation(dte, projectItemModel, containingProject)
{
[CanBeNull] private ProjectImplementation _subProjectImplementation;
private ProjectImplementation SubProjectImplementation
{
get
{
if (_subProjectImplementation is null)
{
switch (DteImplementation.DteProtocolModel.ProjectItem_get_Kind.Sync(new ProjectItemRequest(ProjectItemModel)))
{
case ProjectItemKindModel.PhysicalFile:
_subProjectImplementation = null;
break;
case ProjectItemKindModel.Project:
_subProjectImplementation = ImplementationUtil.GetProjectImplementation(
DteImplementation, new ProjectItemModel(ProjectItemModel.Id), this);
break;
case ProjectItemKindModel.PhysicalFolder:
_subProjectImplementation = new ProjectImplementation(DteImplementation, new ProjectItemModel(ProjectItemModel.Id), this);
break;
case ProjectItemKindModel.Unknown:
case ProjectItemKindModel.VirtualDirectory:
default:
return null;
}
}
return _subProjectImplementation;
}
}
public override string Kind => Constants.vsProjectItemKindSolutionItems;
public override object Object => SubProjectImplementation;
public override Project SubProject => SubProjectImplementation;
// ReSharper disable once AssignNullToNotNullAttribute
public override ProjectItems ProjectItems => null;
}