private ParameterMetadata GetParameter(string parameterSetName, string objectModelParameterName, TypeMetadata parameterTypeMetadata, CmdletParameterMetadata parameterCmdletization, bool isValueFromPipeline, bool isValueFromPipelineByPropertyName) { string pSName; if ((parameterCmdletization != null) && !string.IsNullOrEmpty(parameterCmdletization.PSName)) { pSName = parameterCmdletization.PSName; } else { pSName = objectModelParameterName; } ParameterMetadata metadata = new ParameterMetadata(pSName) { ParameterType = this.GetDotNetType(parameterTypeMetadata) }; if (parameterTypeMetadata.ETSType != null) { metadata.Attributes.Add(new PSTypeNameAttribute(parameterTypeMetadata.ETSType)); } if (parameterCmdletization != null) { if (parameterCmdletization.Aliases != null) { foreach (string str2 in parameterCmdletization.Aliases) { if (!string.IsNullOrEmpty(str2)) { metadata.Aliases.Add(str2); } } } if (parameterCmdletization.AllowEmptyCollection != null) { metadata.Attributes.Add(new AllowEmptyCollectionAttribute()); } if (parameterCmdletization.AllowEmptyString != null) { metadata.Attributes.Add(new AllowEmptyStringAttribute()); } if (parameterCmdletization.AllowNull != null) { metadata.Attributes.Add(new AllowNullAttribute()); } if (parameterCmdletization.ValidateCount != null) { int minLength = (int) LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateCount.Min, typeof(int), CultureInfo.InvariantCulture); int maxLength = (int) LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateCount.Max, typeof(int), CultureInfo.InvariantCulture); metadata.Attributes.Add(new ValidateCountAttribute(minLength, maxLength)); } if (parameterCmdletization.ValidateLength != null) { int num3 = (int) LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateLength.Min, typeof(int), CultureInfo.InvariantCulture); int num4 = (int) LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateLength.Max, typeof(int), CultureInfo.InvariantCulture); metadata.Attributes.Add(new ValidateLengthAttribute(num3, num4)); } if (parameterCmdletization.ValidateNotNull != null) { metadata.Attributes.Add(new ValidateNotNullAttribute()); } if (parameterCmdletization.ValidateNotNullOrEmpty != null) { metadata.Attributes.Add(new ValidateNotNullOrEmptyAttribute()); } if (parameterCmdletization.ValidateRange != null) { Type type2; Type parameterType = metadata.ParameterType; if (parameterType == null) { type2 = typeof(string); } else { type2 = parameterType.HasElementType ? parameterType.GetElementType() : parameterType; } object minRange = LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateRange.Min, type2, CultureInfo.InvariantCulture); object maxRange = LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateRange.Max, type2, CultureInfo.InvariantCulture); metadata.Attributes.Add(new ValidateRangeAttribute(minRange, maxRange)); } if (parameterCmdletization.ValidateSet != null) { List<string> list = new List<string>(); foreach (string str3 in parameterCmdletization.ValidateSet) { list.Add(str3); } metadata.Attributes.Add(new ValidateSetAttribute(list.ToArray())); } } int position = -2147483648; ParameterSetMetadata.ParameterFlags flags = 0; if (parameterCmdletization != null) { if (!string.IsNullOrEmpty(parameterCmdletization.Position)) { position = (int) LanguagePrimitives.ConvertTo(parameterCmdletization.Position, typeof(int), CultureInfo.InvariantCulture); } if (parameterCmdletization.IsMandatorySpecified && parameterCmdletization.IsMandatory) { flags |= ParameterSetMetadata.ParameterFlags.Mandatory; } } if (isValueFromPipeline) { flags |= ParameterSetMetadata.ParameterFlags.ValueFromPipeline; } if (isValueFromPipelineByPropertyName) { flags |= ParameterSetMetadata.ParameterFlags.ValueFromPipelineByPropertyName; } metadata.ParameterSets.Add(parameterSetName, new ParameterSetMetadata(position, flags, null)); return metadata; }
private ParameterMetadata GetParameter(IEnumerable<string> queryParameterSets, string objectModelParameterName, TypeMetadata parameterType, CmdletParameterMetadataForGetCmdletParameter parameterCmdletization) { ParameterMetadata metadata = this.GetParameter("__AllParameterSets", objectModelParameterName, parameterType, parameterCmdletization, ((parameterCmdletization != null) && parameterCmdletization.ValueFromPipelineSpecified) && parameterCmdletization.ValueFromPipeline, ((parameterCmdletization != null) && parameterCmdletization.ValueFromPipelineByPropertyNameSpecified) && parameterCmdletization.ValueFromPipelineByPropertyName); ParameterSetMetadata metadata2 = metadata.ParameterSets["__AllParameterSets"]; metadata.ParameterSets.Clear(); if (((parameterCmdletization != null) && (parameterCmdletization.CmdletParameterSets != null)) && (parameterCmdletization.CmdletParameterSets.Length > 0)) { queryParameterSets = parameterCmdletization.CmdletParameterSets; } foreach (string str in queryParameterSets) { if (!str.Equals("InputObject (cdxml)", StringComparison.OrdinalIgnoreCase)) { metadata.ParameterSets.Add(str, metadata2); } } return metadata; }
private ParameterMetadata GetParameter(string parameterSetName, string objectModelParameterName, TypeMetadata parameterType, CmdletParameterMetadataForStaticMethodParameter parameterCmdletization) { return this.GetParameter(parameterSetName, objectModelParameterName, parameterType, parameterCmdletization, ((parameterCmdletization != null) && parameterCmdletization.ValueFromPipelineSpecified) && parameterCmdletization.ValueFromPipeline, ((parameterCmdletization != null) && parameterCmdletization.ValueFromPipelineByPropertyNameSpecified) && parameterCmdletization.ValueFromPipelineByPropertyName); }
private TypeMetadata Read2_TypeMetadata(bool isNullable, bool checkType) { XmlQualifiedName type = checkType ? base.GetXsiType() : null; bool flag = false; if (isNullable) { flag = base.ReadNull(); } if ((checkType && (type != null)) && ((type.Name != this.id8_TypeMetadata) || (type.Namespace != this.id2_Item))) { throw base.CreateUnknownTypeException(type); } if (flag) { return null; } TypeMetadata o = new TypeMetadata(); bool[] flagArray = new bool[2]; while (base.Reader.MoveToNextAttribute()) { if ((!flagArray[0] && (base.Reader.LocalName == this.id91_PSType)) && (base.Reader.NamespaceURI == this.id4_Item)) { o.PSType = base.Reader.Value; flagArray[0] = true; } else { if ((!flagArray[1] && (base.Reader.LocalName == this.id92_ETSType)) && (base.Reader.NamespaceURI == this.id4_Item)) { o.ETSType = base.Reader.Value; flagArray[1] = true; continue; } if (!base.IsXmlnsAttribute(base.Reader.Name)) { base.UnknownNode(o, ":PSType, :ETSType"); } } } base.Reader.MoveToElement(); if (base.Reader.IsEmptyElement) { base.Reader.Skip(); return o; } base.Reader.ReadStartElement(); base.Reader.MoveToContent(); int whileIterations = 0; int readerCount = base.ReaderCount; while ((base.Reader.NodeType != XmlNodeType.EndElement) && (base.Reader.NodeType != XmlNodeType.None)) { if (base.Reader.NodeType == XmlNodeType.Element) { base.UnknownNode(o, ""); } else { base.UnknownNode(o, ""); } base.Reader.MoveToContent(); base.CheckReaderCount(ref whileIterations, ref readerCount); } base.ReadEndElement(); return o; }
private Type GetDotNetType(TypeMetadata typeMetadata) { string pSType; List<EnumMetadataEnum> list = (from e in this.cmdletizationMetadata.Enums ?? Enumerable.Empty<EnumMetadataEnum>() where Regex.IsMatch(typeMetadata.PSType, string.Format(CultureInfo.InvariantCulture, @"\b{0}\b", new object[] { Regex.Escape(e.EnumName) }), RegexOptions.CultureInvariant) select e).ToList<EnumMetadataEnum>(); EnumMetadataEnum enumMetadata = (list.Count == 1) ? list[0] : null; if (enumMetadata != null) { pSType = typeMetadata.PSType.Replace(enumMetadata.EnumName, EnumWriter.GetEnumFullName(enumMetadata)); } else { pSType = typeMetadata.PSType; } return (Type) LanguagePrimitives.ConvertTo(pSType, typeof(Type), CultureInfo.InvariantCulture); }
private void Write2_TypeMetadata(string n, string ns, TypeMetadata o, bool isNullable, bool needType) { if (o == null) { if (isNullable) { base.WriteNullTagLiteral(n, ns); } } else { if (!needType && !(o.GetType() == typeof(TypeMetadata))) { throw base.CreateUnknownTypeException(o); } base.WriteStartElement(n, ns, o, false, null); if (needType) { base.WriteXsiType("TypeMetadata", "http://schemas.microsoft.com/cmdlets-over-objects/2009/11"); } base.WriteAttribute("PSType", "", o.PSType); base.WriteAttribute("ETSType", "", o.ETSType); base.WriteEndElement(o); } }
private ParameterMetadata GetParameter( IEnumerable<string> queryParameterSets, string objectModelParameterName, TypeMetadata parameterType, CmdletParameterMetadataForGetCmdletParameter parameterCmdletization) { ParameterMetadata result = GetParameter( ParameterAttribute.AllParameterSets, objectModelParameterName, parameterType, parameterCmdletization, parameterCmdletization != null && parameterCmdletization.ValueFromPipelineSpecified && parameterCmdletization.ValueFromPipeline, parameterCmdletization != null && parameterCmdletization.ValueFromPipelineByPropertyNameSpecified && parameterCmdletization.ValueFromPipelineByPropertyName); ParameterSetMetadata parameterSetMetadata = result.ParameterSets[ParameterAttribute.AllParameterSets]; result.ParameterSets.Clear(); if (parameterCmdletization != null && parameterCmdletization.CmdletParameterSets != null && parameterCmdletization.CmdletParameterSets.Length > 0) { queryParameterSets = parameterCmdletization.CmdletParameterSets; } foreach (string parameterSetName in queryParameterSets) { if (parameterSetName.Equals(ScriptWriter.InputObjectQueryParameterSetName, StringComparison.OrdinalIgnoreCase)) { continue; } result.ParameterSets.Add(parameterSetName, parameterSetMetadata); } return result; }
private ParameterMetadata GetParameter( string parameterSetName, string objectModelParameterName, TypeMetadata parameterType, CmdletParameterMetadataForInstanceMethodParameter parameterCmdletization) { return GetParameter( parameterSetName, objectModelParameterName, parameterType, parameterCmdletization, false, /* isValueFromPipeline */ parameterCmdletization != null && parameterCmdletization.ValueFromPipelineByPropertyNameSpecified && parameterCmdletization.ValueFromPipelineByPropertyName); }
private ParameterMetadata GetParameter( string parameterSetName, string objectModelParameterName, TypeMetadata parameterTypeMetadata, CmdletParameterMetadata parameterCmdletization, bool isValueFromPipeline, bool isValueFromPipelineByPropertyName) { string parameterName; if ((parameterCmdletization != null) && (!string.IsNullOrEmpty(parameterCmdletization.PSName))) { parameterName = parameterCmdletization.PSName; } else { parameterName = objectModelParameterName; } ParameterMetadata parameterMetadata = new ParameterMetadata(parameterName); parameterMetadata.ParameterType = GetDotNetType(parameterTypeMetadata); if (typeof(PSCredential).Equals(parameterMetadata.ParameterType)) { parameterMetadata.Attributes.Add(new CredentialAttribute()); } if (parameterTypeMetadata.ETSType != null) { parameterMetadata.Attributes.Add(new PSTypeNameAttribute(parameterTypeMetadata.ETSType)); } if (parameterCmdletization != null) { if (parameterCmdletization.Aliases != null) { foreach (string alias in parameterCmdletization.Aliases) { if (!string.IsNullOrEmpty(alias)) { parameterMetadata.Aliases.Add(alias); } } } if (parameterCmdletization.AllowEmptyCollection != null) { parameterMetadata.Attributes.Add(new AllowEmptyCollectionAttribute()); } if (parameterCmdletization.AllowEmptyString != null) { parameterMetadata.Attributes.Add(new AllowEmptyStringAttribute()); } if (parameterCmdletization.AllowNull != null) { parameterMetadata.Attributes.Add(new AllowNullAttribute()); } if (parameterCmdletization.ValidateCount != null) { int min = (int)LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateCount.Min, typeof(int), CultureInfo.InvariantCulture); int max = (int)LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateCount.Max, typeof(int), CultureInfo.InvariantCulture); parameterMetadata.Attributes.Add(new ValidateCountAttribute(min, max)); } if (parameterCmdletization.ValidateLength != null) { int min = (int)LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateLength.Min, typeof(int), CultureInfo.InvariantCulture); int max = (int)LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateLength.Max, typeof(int), CultureInfo.InvariantCulture); parameterMetadata.Attributes.Add(new ValidateLengthAttribute(min, max)); } if (parameterCmdletization.Obsolete != null) { string obsoleteMessage = parameterCmdletization.Obsolete.Message; parameterMetadata.Attributes.Add(obsoleteMessage != null ? new ObsoleteAttribute(obsoleteMessage) : new ObsoleteAttribute()); } if (parameterCmdletization.ValidateNotNull != null) { parameterMetadata.Attributes.Add(new ValidateNotNullAttribute()); } if (parameterCmdletization.ValidateNotNullOrEmpty != null) { parameterMetadata.Attributes.Add(new ValidateNotNullOrEmptyAttribute()); } if (parameterCmdletization.ValidateRange != null) { Type parameterType = parameterMetadata.ParameterType; Type elementType; if (parameterType == null) { elementType = typeof(string); } else { elementType = parameterType.HasElementType ? parameterType.GetElementType() : parameterType; } object min = LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateRange.Min, elementType, CultureInfo.InvariantCulture); object max = LanguagePrimitives.ConvertTo(parameterCmdletization.ValidateRange.Max, elementType, CultureInfo.InvariantCulture); parameterMetadata.Attributes.Add(new ValidateRangeAttribute(min, max)); } if (parameterCmdletization.ValidateSet != null) { List<string> allowedValues = new List<string>(); foreach (string allowedValue in parameterCmdletization.ValidateSet) { allowedValues.Add(allowedValue); } parameterMetadata.Attributes.Add(new ValidateSetAttribute(allowedValues.ToArray())); } } int position = int.MinValue; ParameterSetMetadata.ParameterFlags parameterFlags = 0; if (parameterCmdletization != null) { if (!string.IsNullOrEmpty(parameterCmdletization.Position)) { position = (int)LanguagePrimitives.ConvertTo(parameterCmdletization.Position, typeof(int), CultureInfo.InvariantCulture); } if (parameterCmdletization.IsMandatorySpecified && parameterCmdletization.IsMandatory) { parameterFlags |= ParameterSetMetadata.ParameterFlags.Mandatory; } } if (isValueFromPipeline) { parameterFlags |= ParameterSetMetadata.ParameterFlags.ValueFromPipeline; } if (isValueFromPipelineByPropertyName) { parameterFlags |= ParameterSetMetadata.ParameterFlags.ValueFromPipelineByPropertyName; } parameterMetadata.ParameterSets.Add(parameterSetName, new ParameterSetMetadata(position, parameterFlags, null)); return parameterMetadata; }
private Type GetDotNetType(TypeMetadata typeMetadata) { Dbg.Assert(typeMetadata != null, "Caller should verify typeMetadata != null"); string psTypeText; List<EnumMetadataEnum> matchingEnums = (_cmdletizationMetadata.Enums ?? Enumerable.Empty<EnumMetadataEnum>()) .Where(e => Regex.IsMatch( typeMetadata.PSType, string.Format(CultureInfo.InvariantCulture, @"\b{0}\b", Regex.Escape(e.EnumName)), RegexOptions.CultureInvariant)) .ToList(); EnumMetadataEnum matchingEnum = matchingEnums.Count == 1 ? matchingEnums[0] : null; if (matchingEnum != null) { psTypeText = typeMetadata.PSType.Replace(matchingEnum.EnumName, EnumWriter.GetEnumFullName(matchingEnum)); } else { psTypeText = typeMetadata.PSType; } Type dotNetType = (Type)LanguagePrimitives.ConvertTo(psTypeText, typeof(Type), CultureInfo.InvariantCulture); return dotNetType; }