示例#1
0
 private static void GenerateSingleMethodParameterProcessing(TextWriter output, string prefix, string cmdletParameterName, Type cmdletParameterType, string etsParameterTypeName, string cmdletParameterDefaultValue, string methodParameterName, MethodParameterBindings methodParameterBindings)
 {
     string fullName = (cmdletParameterType ?? typeof(object)).FullName;
     if (cmdletParameterDefaultValue != null)
     {
         output.WriteLine("{0}[object]$__cmdletization_defaultValue = [System.Management.Automation.LanguagePrimitives]::ConvertTo('{1}', '{2}')", prefix, CommandMetadata.EscapeSingleQuotedString(cmdletParameterDefaultValue), CommandMetadata.EscapeSingleQuotedString(fullName));
         output.WriteLine("{0}[object]$__cmdletization_defaultValueIsPresent = $true", prefix);
     }
     else
     {
         output.WriteLine("{0}[object]$__cmdletization_defaultValue = $null", prefix);
         output.WriteLine("{0}[object]$__cmdletization_defaultValueIsPresent = $false", prefix);
     }
     if (MethodParameterBindings.In == (methodParameterBindings & MethodParameterBindings.In))
     {
         output.WriteLine("{0}if ($PSBoundParameters.ContainsKey('{1}')) {{", prefix, CommandMetadata.EscapeSingleQuotedString(cmdletParameterName));
         output.WriteLine("{0}  [object]$__cmdletization_value = ${{{1}}}", prefix, CommandMetadata.EscapeVariableName(cmdletParameterName));
         output.WriteLine(@"{0}  $__cmdletization_methodParameter = Microsoft.PowerShell.Utility\New-Object Microsoft.PowerShell.Cmdletization.MethodParameter -Property @{{Name = '{1}'; ParameterType = '{2}'; Bindings = '{3}'; Value = $__cmdletization_value; IsValuePresent = $true}}", new object[] { prefix, CommandMetadata.EscapeSingleQuotedString(methodParameterName), CommandMetadata.EscapeSingleQuotedString(fullName), CommandMetadata.EscapeSingleQuotedString(methodParameterBindings.ToString()) });
         output.WriteLine("{0}}} else {{", prefix);
     }
     output.WriteLine(@"{0}  $__cmdletization_methodParameter = Microsoft.PowerShell.Utility\New-Object Microsoft.PowerShell.Cmdletization.MethodParameter -Property @{{Name = '{1}'; ParameterType = '{2}'; Bindings = '{3}'; Value = $__cmdletization_defaultValue; IsValuePresent = $__cmdletization_defaultValueIsPresent}}", new object[] { prefix, CommandMetadata.EscapeSingleQuotedString(methodParameterName), CommandMetadata.EscapeSingleQuotedString(fullName), CommandMetadata.EscapeSingleQuotedString(methodParameterBindings.ToString()) });
     if (MethodParameterBindings.In == (methodParameterBindings & MethodParameterBindings.In))
     {
         output.WriteLine("{0}}}", prefix);
     }
     if (!string.IsNullOrEmpty(etsParameterTypeName))
     {
         output.WriteLine("{0}$__cmdletization_methodParameter.ParameterTypeName = '{1}'", prefix, CommandMetadata.EscapeSingleQuotedString(etsParameterTypeName));
     }
     output.WriteLine("{0}$__cmdletization_methodParameters.Add($__cmdletization_methodParameter)", prefix);
     output.WriteLine();
 }
示例#2
0
        private static void GenerateSingleMethodParameterProcessing(
            TextWriter output,
            string prefix,
            string cmdletParameterName,
            Type cmdletParameterType,
            string etsParameterTypeName,
            string cmdletParameterDefaultValue,
            string methodParameterName,
            MethodParameterBindings methodParameterBindings)
        {
            Dbg.Assert(output != null, "Called should verify output != null");
            Dbg.Assert(prefix != null, "Called should verify output != null");
            // cmdletParameterName can be null for 'out' parameters
            string cmdletParameterTypeName = (cmdletParameterType ?? typeof(object)).FullName;
            Dbg.Assert(methodParameterName != null, "Caller should verify methodParameterName != null");

            if (cmdletParameterDefaultValue != null)
            {
                output.WriteLine(
                    "{0}[object]$__cmdletization_defaultValue = [System.Management.Automation.LanguagePrimitives]::ConvertTo('{1}', '{2}')",
                    prefix,
                    CodeGeneration.EscapeSingleQuotedStringContent(cmdletParameterDefaultValue),
                    CodeGeneration.EscapeSingleQuotedStringContent(cmdletParameterTypeName));
                output.WriteLine(
                    "{0}[object]$__cmdletization_defaultValueIsPresent = $true",
                    prefix);
            }
            else
            {
                output.WriteLine(
                    "{0}[object]$__cmdletization_defaultValue = $null",
                    prefix);
                output.WriteLine(
                    "{0}[object]$__cmdletization_defaultValueIsPresent = $false",
                    prefix);
            }

            if (MethodParameterBindings.In == (methodParameterBindings & MethodParameterBindings.In))
            {
                Dbg.Assert(cmdletParameterName != null, "Called should verify cmdletParameterName!=null for 'in' parameters");

                output.WriteLine(
                    "{0}if ($PSBoundParameters.ContainsKey('{1}')) {{",
                    prefix,
                    CodeGeneration.EscapeSingleQuotedStringContent(cmdletParameterName));
                output.WriteLine(
                    "{0}  [object]$__cmdletization_value = ${{{1}}}",
                    prefix,
                    CodeGeneration.EscapeVariableName(cmdletParameterName));
                output.WriteLine(
                    "{0}  $__cmdletization_methodParameter = [Microsoft.PowerShell.Cmdletization.MethodParameter]@{{Name = '{1}'; ParameterType = '{2}'; Bindings = '{3}'; Value = $__cmdletization_value; IsValuePresent = $true}}",
                    prefix,
                    CodeGeneration.EscapeSingleQuotedStringContent(methodParameterName),
                    CodeGeneration.EscapeSingleQuotedStringContent(cmdletParameterTypeName),
                    CodeGeneration.EscapeSingleQuotedStringContent(methodParameterBindings.ToString()));
                output.WriteLine("{0}}} else {{", prefix);
            }

            output.WriteLine(
                "{0}  $__cmdletization_methodParameter = [Microsoft.PowerShell.Cmdletization.MethodParameter]@{{Name = '{1}'; ParameterType = '{2}'; Bindings = '{3}'; Value = $__cmdletization_defaultValue; IsValuePresent = $__cmdletization_defaultValueIsPresent}}",
                prefix,
                CodeGeneration.EscapeSingleQuotedStringContent(methodParameterName),
                CodeGeneration.EscapeSingleQuotedStringContent(cmdletParameterTypeName),
                CodeGeneration.EscapeSingleQuotedStringContent(methodParameterBindings.ToString()));

            if (MethodParameterBindings.In == (methodParameterBindings & MethodParameterBindings.In))
            {
                output.WriteLine("{0}}}", prefix);
            }

            if (!string.IsNullOrEmpty(etsParameterTypeName))
            {
                output.WriteLine(
                    "{0}$__cmdletization_methodParameter.ParameterTypeName = '{1}'",
                    prefix,
                    CodeGeneration.EscapeSingleQuotedStringContent(etsParameterTypeName));
            }

            output.WriteLine("{0}$__cmdletization_methodParameters.Add($__cmdletization_methodParameter)", prefix);
            output.WriteLine();
        }