File: XamlTypes\Argument.cs
Web Access
Project: ..\..\..\src\Framework\Microsoft.Build.Framework.csproj (Microsoft.Build.Framework)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.ComponentModel;
 
#nullable disable
 
namespace Microsoft.Build.Framework.XamlTypes
{
    /// <summary>
    /// Represents an argument to a <see cref="BaseProperty"/>.
    /// </summary>
    /// <remarks>
    /// Functionally, it is simply a reference to another <see cref="BaseProperty"/>. Those who manually
    /// instantiate this class should remember to call <see cref="BeginInit"/> before setting the first
    /// property and <see cref="EndInit"/> after setting the last property of the object.
    /// </remarks>
    public sealed class Argument : ISupportInitialize
    {
        #region Constructor
 
        /// <summary>
        /// Default constructor needed for XAML deserialization.
        /// </summary>
        public Argument()
        {
            Separator = String.Empty;
        }
 
        #endregion
 
        #region Properties
 
        /// <summary>
        /// Name of the <see cref="BaseProperty"/> this argument refers to.
        /// </summary>
        /// <remarks>
        /// Its value must point to a valid <see cref="BaseProperty"/>. This field is mandatory and culture invariant.
        /// </remarks>
        public string Property
        {
            get;
            set;
        }
 
        /// <summary>
        /// Tells if the <see cref="BaseProperty"/> pointed to by <see cref="Property"/> must be defined for the definition
        /// of the <see cref="BaseProperty"/> owning this argument to make sense.
        /// </summary>
        /// <remarks>
        /// This field is optional and is set to <c>false</c> by default.
        /// </remarks>
        public bool IsRequired
        {
            get;
            set;
        }
 
        /// <summary>
        /// The string used to separate this argument value from the parent <see cref="BaseProperty"/> switch in the command line.
        /// </summary>
        /// <remarks>
        /// This field is optional and culture invariant.
        /// </remarks>
        public string Separator
        {
            get;
            set;
        }
 
        #endregion
 
        #region ISupportInitialize Members
 
        /// <summary>
        /// See ISupportInitialize.
        /// </summary>
        public void BeginInit()
        {
        }
 
        /// <summary>
        /// See ISupportInitialize.
        /// </summary>
        public void EndInit()
        {
        }
 
        #endregion
    }
}