Example #1
0
        private static void InternalSerialize(XmlDictionaryWriter writer, ChangeOperation ChangeOperation, string ns, string property, object value)
        {
            string str = writer.LookupPrefix(ns);

            writer.LookupPrefix("http://schemas.microsoft.com/2008/1/ActiveDirectory");
            if (ChangeOperation != ChangeOperation.None)
            {
                writer.WriteStartElement("Change", "http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess");
                ChangeOperation changeOperation = ChangeOperation;
                switch (changeOperation)
                {
                case ChangeOperation.Add:
                {
                    writer.WriteAttributeString("Operation", "add");
                    break;
                }

                case ChangeOperation.Delete:
                {
                    writer.WriteAttributeString("Operation", "delete");
                    break;
                }

                case ChangeOperation.Replace:
                {
                    writer.WriteAttributeString("Operation", "replace");
                    break;
                }
                }
            }
            else
            {
                writer.WriteStartElement("AttributeTypeAndValue", "http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess");
            }
            writer.WriteElementString("AttributeType", "http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess", AttributeTypeAndValueSerializer.FormatAttributeName(str, property));
            if (value != null)
            {
                if (value as ICollection == null)
                {
                    writer.WriteStartElement("AttributeValue", "http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess");
                    if (value as DirectoryAttributeModification == null)
                    {
                        ADValueSerializer.Serialize(writer, value);
                    }
                    else
                    {
                        DirectoryAttributeModification directoryAttributeModification = (DirectoryAttributeModification)value;
                        ADValueSerializer.Serialize(writer, directoryAttributeModification[0]);
                    }
                    writer.WriteEndElement();
                }
                else
                {
                    ICollection collections = (ICollection)value;
                    if (collections.Count > 0)
                    {
                        writer.WriteStartElement("AttributeValue", "http://schemas.microsoft.com/2006/11/IdentityManagement/DirectoryAccess");
                        foreach (object obj in collections)
                        {
                            ADValueSerializer.Serialize(writer, obj);
                        }
                        writer.WriteEndElement();
                    }
                }
            }
            writer.WriteEndElement();
        }