| File: ObjectModelRemoting\ConstructionObjectLinks\ProjectElementContainerLink.cs | Web Access |
| Project: src\msbuild\src\Build\Microsoft.Build.csproj (Microsoft.Build) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Build.Construction; namespace Microsoft.Build.ObjectModelRemoting { /// <summary> /// External projects support. /// Allow for creating a local representation to external construction objects derived from <see cref="ProjectElementContainer"/> /// </summary> public abstract class ProjectElementContainerLink : ProjectElementLink { /// <summary> /// Access to remote <see cref="ProjectElementContainer.Count"/>. /// </summary> public abstract int Count { get; } /// <summary> /// Access to remote <see cref="ProjectElementContainer.FirstChild"/>. /// </summary> public abstract ProjectElement FirstChild { get; } /// <summary> /// Access to remote <see cref="ProjectElementContainer.LastChild"/>. /// </summary> public abstract ProjectElement LastChild { get; } /// <summary> /// Facilitate remoting the <see cref="ProjectElementContainer.InsertAfterChild"/>. /// </summary> public abstract void InsertAfterChild(ProjectElement child, ProjectElement reference); /// <summary> /// Facilitate remoting the <see cref="ProjectElementContainer.InsertBeforeChild"/>. /// </summary> public abstract void InsertBeforeChild(ProjectElement child, ProjectElement reference); /// <summary> /// Helps implementation of the <see cref="ProjectElementContainer.AppendChild"/>. /// </summary> public abstract void AddInitialChild(ProjectElement child); /// <summary> /// helps implementation the <see cref="ProjectElementContainer.DeepCopyFrom"/>. /// </summary> public abstract ProjectElementContainer DeepClone(ProjectRootElement factory, ProjectElementContainer parent); /// <summary> /// Facilitate remoting the <see cref="ProjectElementContainer.RemoveChild"/>. /// </summary> public abstract void RemoveChild(ProjectElement child); /// <summary> /// ExternalProjectsProvider helpers /// </summary> public static void AddInitialChild(ProjectElementContainer xml, ProjectElement child) => xml.AddInitialChild(child); public static ProjectElementContainer DeepClone(ProjectElementContainer xml, ProjectRootElement factory, ProjectElementContainer parent) => ProjectElementContainer.DeepClone(xml, factory, parent); } // the "equivalence" classes in cases when we don't need additional functionality, // but want to allow for such to be added in the future. /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectChooseElement"/> /// </summary> public abstract class ProjectChooseElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectImportGroupElement"/> /// </summary> public abstract class ProjectImportGroupElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectItemDefinitionElement"/> /// </summary> public abstract class ProjectItemDefinitionElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectItemDefinitionGroupElement"/> /// </summary> public abstract class ProjectItemDefinitionGroupElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectItemGroupElement"/> /// </summary> public abstract class ProjectItemGroupElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectOtherwiseElement"/> /// </summary> public abstract class ProjectOtherwiseElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectPropertyGroupElement"/> /// </summary> public abstract class ProjectPropertyGroupElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectSdkElement"/> /// </summary> public abstract class ProjectSdkElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectUsingTaskElement"/> /// </summary> public abstract class ProjectUsingTaskElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="ProjectWhenElement"/> /// </summary> public abstract class ProjectWhenElementLink : ProjectElementContainerLink { } /// <summary> /// External projects support. /// Allow for creating a local representation to external object of type <see cref="UsingTaskParameterGroupElement"/> /// </summary> public abstract class UsingTaskParameterGroupElementLink : ProjectElementContainerLink { } }