public static MailboxProvisioningAttributes Parse(string attributes) { if (string.IsNullOrEmpty(attributes) || string.IsNullOrWhiteSpace(attributes)) { return(null); } string[] array = attributes.Split(MailboxProvisioningAttributes.provisoningAttributeDelimiter, StringSplitOptions.RemoveEmptyEntries); if (array.Length == 0 || array.Length > 30) { throw new InvalidMailboxProvisioningAttributeException(DirectoryStrings.ErrorInvalidMailboxProvisioningAttributes(30)); } HashSet <string> hashSet = new HashSet <string>(); List <MailboxProvisioningAttribute> list = new List <MailboxProvisioningAttribute>(); ReadOnlyCollection <PropertyDefinition> allFilterableProperties = ObjectSchema.GetInstance <MailboxProvisioningAttributesSchema>().AllFilterableProperties; for (int i = 0; i < array.Length; i++) { MailboxProvisioningAttribute attribute = MailboxProvisioningAttribute.Parse(array[i]); if (hashSet.Contains(attribute.Key)) { throw new InvalidMailboxProvisioningAttributeException(DirectoryStrings.ErrorDuplicateKeyInMailboxProvisioningAttributes(attribute.Key)); } if (!allFilterableProperties.Any((PropertyDefinition x) => x.Name.Equals(attribute.Key))) { string validKeys = string.Join(",", from x in allFilterableProperties select x.Name); throw new ProvisioningAttributeDoesNotMatchSchemaException(attribute.Key, validKeys); } if (MailboxProvisioningAttributes.PermanentAttributeNames.Contains(attribute.Key)) { throw new CannotSetPermanentAttributesException(string.Join(",", MailboxProvisioningAttributes.PermanentAttributeNames)); } list.Add(attribute); } return(new MailboxProvisioningAttributes(list.ToArray())); }
private bool Equals(MailboxProvisioningAttribute other) { return(string.Equals(this.Key, other.Key) && string.Equals(this.Value, other.Value)); }