public static ADRawEntry CreateFrom(SimpleADObject simpleADObject, IEnumerable <PropertyDefinition> properties) { ArgumentValidator.ThrowIfNull("simpleADObject", simpleADObject); ArgumentValidator.ThrowIfNull("properties", properties); ADPropertyBag adpropertyBag = new ADPropertyBag(); SimpleADObject.SimpleList <SimpleADObject.SimpleADProperty> properties2 = simpleADObject.Properties; SimpleADObject.SimpleADProperty simpleADProperty; if (!properties2.TryGetValue(ADObjectSchema.Id.LdapDisplayName, out simpleADProperty)) { throw new InvalidOperationException("dn is missing"); } ValidationError validationError; ADObjectId value = (ADObjectId)ADValueConvertor.ConvertFromADAndValidateSingleValue(simpleADProperty.Value as string, ADObjectSchema.Id, false, out validationError); adpropertyBag.SetField(ADObjectSchema.Id, value); foreach (PropertyDefinition propertyDefinition in properties) { ADPropertyDefinition propertyDefinition2 = (ADPropertyDefinition)propertyDefinition; SimpleADObject.AddPropertyToPropertyBag(propertyDefinition2, adpropertyBag, properties2); } adpropertyBag.SetField(ADObjectSchema.ObjectState, simpleADObject.ObjectState); adpropertyBag.SetObjectVersion(simpleADObject.ExchangeVersion); return(new ADRawEntry(adpropertyBag) { OriginatingServer = simpleADObject.OriginatingServer, WhenReadUTC = new DateTime?(simpleADObject.WhenReadUTC), DirectoryBackendType = simpleADObject.DirectoryBackendType, IsCached = true }); }
public static SimpleADObject.SimpleList <SimpleADObject> CreateList <T>(IList <T> list) where T : ADObject, new() { ArgumentValidator.ThrowIfNull("list", list); SimpleADObject.SimpleList <SimpleADObject> simpleList = new SimpleADObject.SimpleList <SimpleADObject>(list.Count); foreach (T t in list) { SimpleADObject simpleADObject = SimpleADObject.CreateFrom(t, null); simpleList.Add(simpleADObject.Name, simpleADObject); } return(simpleList); }
public static List <T> CreateList <T>(SimpleADObject.SimpleList <SimpleADObject> list, ADObjectSchema schema, IEnumerable <PropertyDefinition> additionalProperties = null) where T : ADObject, new() { ArgumentValidator.ThrowIfNull("list", list); ArgumentValidator.ThrowIfNull("schema", schema); List <T> list2 = new List <T>(list.Count); foreach (SimpleADObject simpleADObject in list.Values) { T item = SimpleADObject.CreateFrom <T>(simpleADObject, schema, additionalProperties); list2.Add(item); } return(list2); }
public static SimpleADObject.SimpleList <T> Read(BinaryReader reader) { ArgumentValidator.ThrowIfNull("reader", reader); int num = reader.ReadInt32(); SimpleADObject.SimpleList <T> simpleList = new SimpleADObject.SimpleList <T>(num); for (int i = 0; i < num; i++) { T value = (default(T) == null) ? Activator.CreateInstance <T>() : default(T); value.Read(reader); simpleList.Add(value.Name, value); } return(simpleList); }
public static void Write(BinaryWriter writer, SimpleADObject.SimpleList <T> list) { ArgumentValidator.ThrowIfNull("writer", writer); int num = (list == null) ? 0 : list.Count; writer.Write(num); if (num == 0) { return; } foreach (T t in list.Values) { t.Write(writer); } }
public bool Equals(SimpleADObject.SimpleList <T> right) { if (right == null) { return(false); } if (object.ReferenceEquals(this, right)) { return(true); } if (base.Count != right.Count) { return(false); } foreach (T t in base.Values) { T right2; if (!right.TryGetValue(t.Name, out right2) || !t.Equals(right2)) { return(false); } } return(true); }
public static TObject CreateFrom <TObject>(SimpleADObject simpleADObject, ADObjectSchema schema, IEnumerable <PropertyDefinition> additionalProperties) where TObject : ADRawEntry, new() { ArgumentValidator.ThrowIfNull("simpleADObject", simpleADObject); if (typeof(TObject).Equals(typeof(ADRawEntry))) { throw new ArgumentException("TObject cannot be ADRawEntry"); } ADPropertyBag adpropertyBag = new ADPropertyBag(); SimpleADObject.SimpleList <SimpleADObject.SimpleADProperty> properties = simpleADObject.Properties; SimpleADObject.SimpleADProperty simpleADProperty; if (!properties.TryGetValue(ADObjectSchema.Id.LdapDisplayName, out simpleADProperty)) { throw new InvalidOperationException("dn is missing"); } ValidationError validationError; ADObjectId value = (ADObjectId)ADValueConvertor.ConvertFromADAndValidateSingleValue(simpleADProperty.Value as string, ADObjectSchema.Id, false, out validationError); adpropertyBag.SetField(ADObjectSchema.Id, value); adpropertyBag.SetField(ADObjectSchema.ObjectState, simpleADObject.ObjectState); adpropertyBag.SetObjectVersion(simpleADObject.ExchangeVersion); TObject tobject = Activator.CreateInstance <TObject>(); IEnumerable <PropertyDefinition> enumerable; if (schema != null) { enumerable = schema.AllProperties; } else { enumerable = ((ADObject)((object)tobject)).Schema.AllProperties; } if (additionalProperties != null) { enumerable = enumerable.Concat(additionalProperties); } foreach (PropertyDefinition propertyDefinition in enumerable) { ADPropertyDefinition propertyDefinition2 = (ADPropertyDefinition)propertyDefinition; SimpleADObject.AddPropertyToPropertyBag(propertyDefinition2, adpropertyBag, properties); } if (tobject is MiniObject) { adpropertyBag.SetIsReadOnly(true); } if (schema != null || (!(tobject is ADRecipient) && !(tobject is MiniRecipient))) { tobject = (TObject)((object)ADObjectFactory.CreateAndInitializeConfigObject <TObject>(adpropertyBag, tobject, null)); } else { tobject = (TObject)((object)ADObjectFactory.CreateAndInitializeRecipientObject <TObject>(adpropertyBag, tobject, null)); } tobject.OriginatingServer = simpleADObject.OriginatingServer; tobject.WhenReadUTC = new DateTime?(simpleADObject.WhenReadUTC); tobject.DirectoryBackendType = simpleADObject.DirectoryBackendType; tobject.IsCached = true; tobject.ValidateRead(); tobject.ResetChangeTracking(); return(tobject); }
public static bool Equals(SimpleADObject.SimpleList <T> left, SimpleADObject.SimpleList <T> right) { return(object.ReferenceEquals(left, right) || (left != null && left.Equals(right))); }
private static void AddPropertyToPropertyBag(ADPropertyDefinition propertyDefinition, PropertyBag propertyBag, SimpleADObject.SimpleList <SimpleADObject.SimpleADProperty> lookup) { if (propertyBag.Contains(propertyDefinition)) { return; } if (propertyDefinition.IsCalculated) { foreach (ProviderPropertyDefinition providerPropertyDefinition in propertyDefinition.SupportingProperties) { ADPropertyDefinition propertyDefinition2 = (ADPropertyDefinition)providerPropertyDefinition; SimpleADObject.AddPropertyToPropertyBag(propertyDefinition2, propertyBag, lookup); } return; } if (string.IsNullOrEmpty(propertyDefinition.LdapDisplayName)) { return; } SimpleADObject.SimpleADProperty simpleADProperty; if (!lookup.TryGetValue(propertyDefinition.LdapDisplayName, out simpleADProperty) || simpleADProperty == null) { propertyBag.SetField(propertyDefinition, null); return; } if (simpleADProperty.Value == null) { propertyBag.SetField(propertyDefinition, null); return; } object value5; if (propertyDefinition.IsMultivalued) { ArrayList arrayList = new ArrayList(); ArrayList invalidValues = new ArrayList(); if (propertyDefinition.IsBinary) { List <byte[]> list = simpleADProperty.Value as List <byte[]>; if (list == null) { return; } using (List <byte[]> .Enumerator enumerator2 = list.GetEnumerator()) { while (enumerator2.MoveNext()) { byte[] value = enumerator2.Current; ValidationError validationError; object value2 = ADValueConvertor.ConvertFromADAndValidateSingleValue(value, propertyDefinition, propertyDefinition.Type == typeof(byte[]), out validationError); arrayList.Add(value2); } goto IL_17F; } } List <string> list2 = simpleADProperty.Value as List <string>; if (list2 == null) { return; } foreach (string value3 in list2) { ValidationError validationError2; object value4 = ADValueConvertor.ConvertFromADAndValidateSingleValue(value3, propertyDefinition, propertyDefinition.Type == typeof(string), out validationError2); arrayList.Add(value4); } IL_17F: MultiValuedPropertyBase multiValuedPropertyBase = ADValueConvertor.CreateGenericMultiValuedProperty(propertyDefinition, true, arrayList, invalidValues, null); multiValuedPropertyBase.IsCompletelyRead = true; value5 = multiValuedPropertyBase; } else { ValidationError validationError3; value5 = ADValueConvertor.ConvertFromADAndValidateSingleValue(simpleADProperty.Value, propertyDefinition, propertyDefinition.Type == (propertyDefinition.IsBinary ? typeof(byte[]) : typeof(string)), out validationError3); } propertyBag.SetField(propertyDefinition, value5); }
public static bool ListEquals(SimpleADObject.SimpleList <SimpleADObject> left, SimpleADObject.SimpleList <SimpleADObject> right) { return(SimpleADObject.SimpleList <SimpleADObject> .Equals(left, right)); }
public static void WriteList(BinaryWriter writer, SimpleADObject.SimpleList <SimpleADObject> list) { SimpleADObject.SimpleList <SimpleADObject> .Write(writer, list); }