internal CommandParameterInfo(MemberInfo info, Type paramType, ParameterAttribute paramAttr) { MemberInfo = info; Name = info.Name; ParameterType = paramType; Position = paramAttr.Position; ValueFromPipeline = paramAttr.ValueFromPipeline; ValueFromPipelineByPropertyName = paramAttr.ValueFromPipelineByPropertyName; ValueFromRemainingArguments = paramAttr.ValueFromRemainingArguments; IsMandatory = paramAttr.Mandatory; List <Attribute> attributes = new List <Attribute>(1); attributes.Add(paramAttr); // Reflect Aliases from field/property AliasAttribute aliasAttr = (AliasAttribute)info.GetCustomAttributes(false).Where(i => i is AliasAttribute).FirstOrDefault(); if (aliasAttr != null) { List <string> aliases = new List <string>(aliasAttr.AliasNames); Aliases = new ReadOnlyCollection <string>(aliases); attributes.Add(aliasAttr); } else { Aliases = new ReadOnlyCollection <string>(new List <string>()); } Attributes = new ReadOnlyCollection <Attribute>(attributes); }
private void ProcessAliasAttribute(AliasAttribute attribute) { foreach (string str in attribute.aliasNames) { this.aliases.Add(str); } }
private void ProcessAttribute(string memberName, Attribute attribute) { if (attribute != null) { this.attributes.Add(attribute); ParameterAttribute parameter = attribute as ParameterAttribute; if (parameter != null) { this.ProcessParameterAttribute(memberName, parameter); } else { AliasAttribute attribute3 = attribute as AliasAttribute; if (attribute3 != null) { this.ProcessAliasAttribute(attribute3); } else { ArgumentTransformationAttribute item = attribute as ArgumentTransformationAttribute; if (item != null) { this.argumentTransformationAttributes.Add(item); } else { ValidateArgumentsAttribute attribute5 = attribute as ValidateArgumentsAttribute; if (attribute5 != null) { this.validationAttributes.Add(attribute5); } else if (attribute is AllowNullAttribute) { this.allowsNullArgument = true; } else if (attribute is AllowEmptyStringAttribute) { this.allowsEmptyStringArgument = true; } else if (attribute is AllowEmptyCollectionAttribute) { this.allowsEmptyCollectionArgument = true; } else { PSTypeNameAttribute attribute9 = attribute as PSTypeNameAttribute; if (attribute9 != null) { this.PSTypeName = attribute9.PSTypeName; } } } } } } }
internal CommandParameterInfo(MemberInfo info, Type paramType, ParameterAttribute paramAttr) { MemberInfo = info; Name = info.Name; ParameterType = paramType; Position = paramAttr.Position; ValueFromPipeline = paramAttr.ValueFromPipeline; ValueFromPipelineByPropertyName = paramAttr.ValueFromPipelineByPropertyName; ValueFromRemainingArguments = paramAttr.ValueFromRemainingArguments; IsMandatory = paramAttr.Mandatory; HelpMessage = paramAttr.HelpMessage; ParameterSetName = paramAttr.ParameterSetName ?? ParameterAttribute.AllParameterSets; List <Attribute> attributes = new List <Attribute>(1); attributes.Add(paramAttr); // Reflect Aliases from field/property AliasAttribute aliasAttr = (AliasAttribute)info.GetCustomAttributes(false).FirstOrDefault(i => i is AliasAttribute); if (aliasAttr != null) { List <string> aliases = new List <string>(aliasAttr.AliasNames); Aliases = new ReadOnlyCollection <string>(aliases); attributes.Add(aliasAttr); } else { Aliases = new ReadOnlyCollection <string>(new List <string>()); } var transformationAttrs = info.GetCustomAttributes(true).OfType <ArgumentTransformationAttribute>().ToList(); TransformationAttributes = new ReadOnlyCollection <ArgumentTransformationAttribute>(transformationAttrs); Attributes = new ReadOnlyCollection <Attribute>(attributes); }
/// <summary> /// Processes the Attribute metadata to generate a CompiledCommandAttribute. /// </summary> /// <exception cref="MetadataException"> /// If the attribute is a parameter attribute and another parameter attribute /// has been processed with the same parameter-set name. /// </exception> private void ProcessAttribute( string memberName, Attribute attribute, ref Collection <ValidateArgumentsAttribute> validationAttributes, ref Collection <ArgumentTransformationAttribute> argTransformationAttributes, ref string[] aliases) { if (attribute == null) { return; } CompiledAttributes.Add(attribute); // Now process the attribute based on it's type if (attribute is ParameterAttribute paramAttr) { ProcessParameterAttribute(memberName, paramAttr); return; } ValidateArgumentsAttribute validateAttr = attribute as ValidateArgumentsAttribute; if (validateAttr != null) { if (validationAttributes == null) { validationAttributes = new Collection <ValidateArgumentsAttribute>(); } validationAttributes.Add(validateAttr); if ((attribute is ValidateNotNullAttribute) || (attribute is ValidateNotNullOrEmptyAttribute)) { this.CannotBeNull = true; } return; } AliasAttribute aliasAttr = attribute as AliasAttribute; if (aliasAttr != null) { if (aliases == null) { aliases = aliasAttr.aliasNames; } else { var prevAliasNames = aliases; var newAliasNames = aliasAttr.aliasNames; aliases = new string[prevAliasNames.Length + newAliasNames.Length]; Array.Copy(prevAliasNames, aliases, prevAliasNames.Length); Array.Copy(newAliasNames, 0, aliases, prevAliasNames.Length, newAliasNames.Length); } return; } ArgumentTransformationAttribute argumentAttr = attribute as ArgumentTransformationAttribute; if (argumentAttr != null) { if (argTransformationAttributes == null) { argTransformationAttributes = new Collection <ArgumentTransformationAttribute>(); } argTransformationAttributes.Add(argumentAttr); return; } AllowNullAttribute allowNullAttribute = attribute as AllowNullAttribute; if (allowNullAttribute != null) { this.AllowsNullArgument = true; return; } AllowEmptyStringAttribute allowEmptyStringAttribute = attribute as AllowEmptyStringAttribute; if (allowEmptyStringAttribute != null) { this.AllowsEmptyStringArgument = true; return; } AllowEmptyCollectionAttribute allowEmptyCollectionAttribute = attribute as AllowEmptyCollectionAttribute; if (allowEmptyCollectionAttribute != null) { this.AllowsEmptyCollectionArgument = true; return; } ObsoleteAttribute obsoleteAttr = attribute as ObsoleteAttribute; if (obsoleteAttr != null) { ObsoleteAttribute = obsoleteAttr; return; } PSTypeNameAttribute psTypeNameAttribute = attribute as PSTypeNameAttribute; if (psTypeNameAttribute != null) { this.PSTypeName = psTypeNameAttribute.PSTypeName; } }