コード例 #1
0
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="toClone"></param>
 internal ParameterSetEntry(ParameterSetEntry toClone)
 {
     this.mandatoryParameterCount = toClone.MandatoryParameterCount;
     this.isDefaultParameterSet   = toClone.IsDefaultParameterSet;
     reset();
 }
コード例 #2
0
        /// <summary>
        /// Get the parameter set name based on current binding results
        /// </summary>
        /// <returns></returns>
        internal string GetParameterSet()
        {
            DebugHelper.WriteLogEx();

            string        boundParameterSetName   = null;
            string        defaultParameterSetName = null;
            List <string> noMandatoryParameterSet = new List <string>();

            // Looking for parameter set which have mandatory parameters
            foreach (string parameterSetName in this.parameterSetEntries.Keys)
            {
                ParameterSetEntry entry = this.parameterSetEntries[parameterSetName];
                DebugHelper.WriteLogEx(
                    "parameterset name = {0}, {1}/{2} mandatory parameters.",
                    1,
                    parameterSetName,
                    entry.SetMandatoryParameterCount,
                    entry.MandatoryParameterCount);

                // Ignore the parameter set which has no mandatory parameter firstly
                if (entry.MandatoryParameterCount == 0)
                {
                    if (entry.IsDefaultParameterSet)
                    {
                        defaultParameterSetName = parameterSetName;
                    }
                    if (entry.IsValueSet)
                    {
                        noMandatoryParameterSet.Add(parameterSetName);
                    }
                    continue;
                }
                if ((entry.SetMandatoryParameterCount == entry.MandatoryParameterCount) &&
                    this.parametersetNamesList.Contains(parameterSetName))
                {
                    if (boundParameterSetName != null)
                    {
                        throw new PSArgumentException(Strings.UnableToResolveParameterSetName);
                    }
                    boundParameterSetName = parameterSetName;
                }
            }

            // Looking for parameter set which has no mandatory parameters
            if (boundParameterSetName == null)
            {
                // throw if there are > 1 parameter set
                if (noMandatoryParameterSet.Count > 1)
                {
                    throw new PSArgumentException(Strings.UnableToResolveParameterSetName);
                }
                else if (noMandatoryParameterSet.Count == 1)
                {
                    boundParameterSetName = noMandatoryParameterSet[0];
                }
            }

            // Looking for default parameter set
            if (boundParameterSetName == null)
            {
                boundParameterSetName = defaultParameterSetName;
            }

            // throw if still can not find the parameter set name
            if (boundParameterSetName == null)
            {
                throw new PSArgumentException(Strings.UnableToResolveParameterSetName);
            }
            return(boundParameterSetName);
        }
コード例 #3
0
        /// <summary>
        /// <para>
        /// A given parameter's value was set by cmdlet caller,
        /// check and change the status of parameter set,
        /// throw exception if confliction occurred
        /// </para>
        /// </summary>
        /// <param name="parameterName"></param>
        /// <exception cref="PSArgumentException">throw if conflict parameter was set</exception>
        internal void SetParameter(string parameterName, bool isBeginProcess)
        {
            DebugHelper.WriteLogEx("ParameterName = {0}, isBeginProcess = {1}", 0, parameterName, isBeginProcess);

            if (this.parameterNamesList.Contains(parameterName))
            {
                DebugHelper.WriteLogEx("ParameterName {0} is already bound ", 1, parameterName);
                return;
            }
            else
            {
                this.parameterNamesList.Add(parameterName);
                if (isBeginProcess)
                {
                    this.parameterNamesListAtBeginProcess.Add(parameterName);
                }
            }

            if (this.parametersetNamesList.Count == 0)
            {
                List <string> nameset = new List <string>();
                foreach (ParameterDefinitionEntry parameterDefinitionEntry in this.parameterDefinitionEntries[parameterName])
                {
                    DebugHelper.WriteLogEx("parameterset name = '{0}'; mandatory = '{1}'", 1, parameterDefinitionEntry.ParameterSetName, parameterDefinitionEntry.IsMandatory);
                    ParameterSetEntry psEntry = this.parameterSetEntries[parameterDefinitionEntry.ParameterSetName];
                    if (psEntry == null)
                    {
                        continue;
                    }

                    if (parameterDefinitionEntry.IsMandatory)
                    {
                        psEntry.SetMandatoryParameterCount++;
                        if (isBeginProcess)
                        {
                            psEntry.SetMandatoryParameterCountAtBeginProcess++;
                        }
                        DebugHelper.WriteLogEx("parameterset name = '{0}'; SetMandatoryParameterCount = '{1}'", 1, parameterDefinitionEntry.ParameterSetName, psEntry.SetMandatoryParameterCount);
                    }
                    if (!psEntry.IsValueSet)
                    {
                        psEntry.IsValueSet = true;
                        if (isBeginProcess)
                        {
                            psEntry.IsValueSetAtBeginProcess = true;
                        }
                    }
                    nameset.Add(parameterDefinitionEntry.ParameterSetName);
                }
                this.parametersetNamesList = nameset;
                if (isBeginProcess)
                {
                    this.parametersetNamesListAtBeginProcess = nameset;
                }
            }
            else
            {
                List <string> nameset = new List <string>();
                foreach (ParameterDefinitionEntry entry in this.parameterDefinitionEntries[parameterName])
                {
                    if (this.parametersetNamesList.Contains(entry.ParameterSetName))
                    {
                        nameset.Add(entry.ParameterSetName);
                        if (entry.IsMandatory)
                        {
                            ParameterSetEntry psEntry = this.parameterSetEntries[entry.ParameterSetName];
                            psEntry.SetMandatoryParameterCount++;
                            if (isBeginProcess)
                            {
                                psEntry.SetMandatoryParameterCountAtBeginProcess++;
                            }
                            DebugHelper.WriteLogEx("parameterset name = '{0}'; SetMandatoryParameterCount = '{1}'",
                                                   1,
                                                   entry.ParameterSetName,
                                                   psEntry.SetMandatoryParameterCount);
                        }
                    }
                }
                if (nameset.Count == 0)
                {
                    throw new PSArgumentException(Strings.UnableToResolveParameterSetName);
                }
                else
                {
                    this.parametersetNamesList = nameset;
                    if (isBeginProcess)
                    {
                        this.parametersetNamesListAtBeginProcess = nameset;
                    }
                }
            }
        }
コード例 #4
0
ファイル: ParameterSetEntry.cs プロジェクト: nickchal/pash
		internal ParameterSetEntry(ParameterSetEntry toClone)
		{
			this.mandatoryParameterCount = toClone.MandatoryParameterCount;
			this.isDefaultParameterSet = toClone.IsDefaultParameterSet;
			this.reset();
		}
コード例 #5
0
ファイル: ParameterBinder.cs プロジェクト: modulexcite/pash-1
        internal string GetParameterSet()
        {
            DebugHelper.WriteLogEx();
            string        item = null;
            string        str  = null;
            List <string> strs = new List <string>();

            foreach (string key in this.parameterSetEntries.Keys)
            {
                ParameterSetEntry parameterSetEntry          = this.parameterSetEntries[key];
                object[]          setMandatoryParameterCount = new object[3];
                setMandatoryParameterCount[0] = key;
                setMandatoryParameterCount[1] = parameterSetEntry.SetMandatoryParameterCount;
                setMandatoryParameterCount[2] = parameterSetEntry.MandatoryParameterCount;
                DebugHelper.WriteLogEx("parameterset name = {0}, {1}/{2} mandatory parameters.", 1, setMandatoryParameterCount);
                if (parameterSetEntry.MandatoryParameterCount != 0)
                {
                    if (parameterSetEntry.SetMandatoryParameterCount != parameterSetEntry.MandatoryParameterCount || !this.parametersetNamesList.Contains(key))
                    {
                        continue;
                    }
                    if (item == null)
                    {
                        item = key;
                    }
                    else
                    {
                        throw new PSArgumentException(Strings.UnableToResolvePareameterSetName);
                    }
                }
                else
                {
                    if (parameterSetEntry.IsDefaultParameterSet)
                    {
                        str = key;
                    }
                    if (!parameterSetEntry.IsValueSet)
                    {
                        continue;
                    }
                    strs.Add(key);
                }
            }
            if (item == null)
            {
                if (strs.Count <= 1)
                {
                    if (strs.Count == 1)
                    {
                        item = strs[0];
                    }
                }
                else
                {
                    throw new PSArgumentException(Strings.UnableToResolvePareameterSetName);
                }
            }
            if (item == null)
            {
                item = str;
            }
            if (item != null)
            {
                return(item);
            }
            else
            {
                throw new PSArgumentException(Strings.UnableToResolvePareameterSetName);
            }
        }
コード例 #6
0
ファイル: ParameterBinder.cs プロジェクト: modulexcite/pash-1
 internal void SetParameter(string parameterName, bool isBeginProcess)
 {
     object[] objArray = new object[2];
     objArray[0] = parameterName;
     objArray[1] = isBeginProcess;
     DebugHelper.WriteLogEx("ParameterName = {0}, isBeginProcess = {1}", 0, objArray);
     if (!this.parameterNamesList.Contains(parameterName))
     {
         this.parameterNamesList.Add(parameterName);
         if (isBeginProcess)
         {
             this.parameterNamesListAtBeginProcess.Add(parameterName);
         }
         if (this.parametersetNamesList.Count != 0)
         {
             List <string> strs = new List <string>();
             foreach (ParameterDefinitionEntry item in this.parameterDefinitionEntries[parameterName])
             {
                 if (!this.parametersetNamesList.Contains(item.ParameterSetName))
                 {
                     continue;
                 }
                 strs.Add(item.ParameterSetName);
                 if (!item.IsMandatory)
                 {
                     continue;
                 }
                 ParameterSetEntry parameterSetEntry          = this.parameterSetEntries[item.ParameterSetName];
                 ParameterSetEntry setMandatoryParameterCount = parameterSetEntry;
                 setMandatoryParameterCount.SetMandatoryParameterCount = setMandatoryParameterCount.SetMandatoryParameterCount + 1;
                 if (isBeginProcess)
                 {
                     ParameterSetEntry setMandatoryParameterCountAtBeginProcess = parameterSetEntry;
                     setMandatoryParameterCountAtBeginProcess.SetMandatoryParameterCountAtBeginProcess = setMandatoryParameterCountAtBeginProcess.SetMandatoryParameterCountAtBeginProcess + 1;
                 }
                 object[] parameterSetName = new object[2];
                 parameterSetName[0] = item.ParameterSetName;
                 parameterSetName[1] = parameterSetEntry.SetMandatoryParameterCount;
                 DebugHelper.WriteLogEx("parameterset name = '{0}'; SetMandatoryParameterCount = '{1}'", 1, parameterSetName);
             }
             if (strs.Count != 0)
             {
                 this.parametersetNamesList = strs;
                 if (isBeginProcess)
                 {
                     this.parametersetNamesListAtBeginProcess = strs;
                 }
             }
             else
             {
                 throw new PSArgumentException(Strings.UnableToResolvePareameterSetName);
             }
         }
         else
         {
             List <string> strs1 = new List <string>();
             foreach (ParameterDefinitionEntry parameterDefinitionEntry in this.parameterDefinitionEntries[parameterName])
             {
                 object[] isMandatory = new object[2];
                 isMandatory[0] = parameterDefinitionEntry.ParameterSetName;
                 isMandatory[1] = parameterDefinitionEntry.IsMandatory;
                 DebugHelper.WriteLogEx("parameterset name = '{0}'; mandatory = '{1}'", 1, isMandatory);
                 ParameterSetEntry item1 = this.parameterSetEntries[parameterDefinitionEntry.ParameterSetName];
                 if (item1 == null)
                 {
                     continue;
                 }
                 if (parameterDefinitionEntry.IsMandatory)
                 {
                     ParameterSetEntry setMandatoryParameterCount1 = item1;
                     setMandatoryParameterCount1.SetMandatoryParameterCount = setMandatoryParameterCount1.SetMandatoryParameterCount + 1;
                     if (isBeginProcess)
                     {
                         ParameterSetEntry setMandatoryParameterCountAtBeginProcess1 = item1;
                         setMandatoryParameterCountAtBeginProcess1.SetMandatoryParameterCountAtBeginProcess = setMandatoryParameterCountAtBeginProcess1.SetMandatoryParameterCountAtBeginProcess + 1;
                     }
                     object[] parameterSetName1 = new object[2];
                     parameterSetName1[0] = parameterDefinitionEntry.ParameterSetName;
                     parameterSetName1[1] = item1.SetMandatoryParameterCount;
                     DebugHelper.WriteLogEx("parameterset name = '{0}'; SetMandatoryParameterCount = '{1}'", 1, parameterSetName1);
                 }
                 if (!item1.IsValueSet)
                 {
                     item1.IsValueSet = true;
                     if (isBeginProcess)
                     {
                         item1.IsValueSetAtBeginProcess = true;
                     }
                 }
                 strs1.Add(parameterDefinitionEntry.ParameterSetName);
             }
             this.parametersetNamesList = strs1;
             if (isBeginProcess)
             {
                 this.parametersetNamesListAtBeginProcess = strs1;
                 return;
             }
         }
         return;
     }
     else
     {
         object[] objArray1 = new object[1];
         objArray1[0] = parameterName;
         DebugHelper.WriteLogEx("ParameterName {0} is already bound ", 1, objArray1);
         return;
     }
 }