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(); }
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(); }