private SyncPropertyDefinition(string name, string msoPropertyName, ExchangeObjectVersion versionAdded, Type type, Type externalType, string ldapDisplayName, ADPropertyDefinitionFlags flags, SyncPropertyDefinitionFlags syncFlags, ServerVersion syncVersionAdded, object defaultValue, ProviderPropertyDefinition[] supportingProperties, CustomFilterBuilderDelegate customFilterBuilderDelegate, GetterDelegate getterDelegate, SetterDelegate setterDelegate, ADPropertyDefinition shadowProperty) : base(name, versionAdded, type, ldapDisplayName, SyncPropertyDefinition.CalculateFlags(ldapDisplayName, (ADPropertyDefinitionFlags)(syncFlags | (SyncPropertyDefinitionFlags)flags)), defaultValue, PropertyDefinitionConstraint.None, PropertyDefinitionConstraint.None, supportingProperties, customFilterBuilderDelegate, getterDelegate, setterDelegate, null, null)
        {
            this.externalType             = externalType;
            this.MsoPropertyName          = msoPropertyName;
            this.SyncPropertyVersionAdded = syncVersionAdded;
            SyncPropertyDefinitionFlags syncPropertyDefinitionFlags = syncFlags & ~(SyncPropertyDefinitionFlags.ForwardSync | SyncPropertyDefinitionFlags.BackSync);

            syncPropertyDefinitionFlags |= SyncPropertyDefinitionFlags.Shadow;
            if (shadowProperty != null)
            {
                Type type2 = shadowProperty.Type;
                if (type2 == typeof(ADObjectId))
                {
                    type2 = typeof(SyncLink);
                }
                this.shadowProperty = new SyncPropertyDefinition(shadowProperty, msoPropertyName, type2, externalType, syncPropertyDefinitionFlags, syncVersionAdded);
                return;
            }
            if (this.IsBackSync && base.SupportingProperties.Count == 1 && ((ADPropertyDefinition)base.SupportingProperties[0]).ShadowProperty != null)
            {
                this.shadowProperty = new SyncPropertyDefinition(string.Format(CultureInfo.InvariantCulture, "Shadow{0}", new object[]
                {
                    base.Name
                }), msoPropertyName, base.Type, this.ExternalType, syncPropertyDefinitionFlags, syncVersionAdded, base.DefaultValue, new ProviderPropertyDefinition[]
                {
                    ((ADPropertyDefinition)base.SupportingProperties[0]).ShadowProperty
                }, base.GetterDelegate, base.SetterDelegate);
            }
        }
 public SyncPropertyDefinition(string name, string msoPropertyName, Type type, Type externalType, SyncPropertyDefinitionFlags flags, ServerVersion versionAdded, object defaultValue, ProviderPropertyDefinition[] supportingProperties, GetterDelegate getterDelegate, SetterDelegate setterDelegate) : this(name, msoPropertyName, ExchangeObjectVersion.Exchange2010, type, externalType, null, ADPropertyDefinitionFlags.None, flags, versionAdded, defaultValue, supportingProperties, new CustomFilterBuilderDelegate(ADObject.DummyCustomFilterBuilderDelegate), getterDelegate, setterDelegate, null)
 {
 }
 public SyncPropertyDefinition(ADPropertyDefinition aDPropertyDefinition, string msoPropertyName, Type type, Type externalType, SyncPropertyDefinitionFlags flags, ServerVersion versionAdded) : this(aDPropertyDefinition.Name, msoPropertyName, aDPropertyDefinition.VersionAdded, type, externalType, aDPropertyDefinition.LdapDisplayName, aDPropertyDefinition.Flags, flags, versionAdded, aDPropertyDefinition.DefaultValue, SyncPropertyDefinition.ConvertReadOnlyCollectionToArray <ProviderPropertyDefinition>(aDPropertyDefinition.SupportingProperties), aDPropertyDefinition.CustomFilterBuilderDelegate, aDPropertyDefinition.GetterDelegate, aDPropertyDefinition.SetterDelegate, aDPropertyDefinition.ShadowProperty)
 {
 }
 public SyncPropertyDefinition(string name, string msoPropertyName, Type type, Type externalType, SyncPropertyDefinitionFlags flags, ServerVersion versionAdded, object defaultValue) : this(name, msoPropertyName, type, externalType, flags, versionAdded, defaultValue, ProviderPropertyDefinition.None, null, null)
 {
 }
 internal SyncPropertyDefinition(ADPropertyDefinition aDPropertyDefinition, string msoPropertyName, Type externalType, SyncPropertyDefinitionFlags flags, ServerVersion versionAdded) : this(aDPropertyDefinition, msoPropertyName, aDPropertyDefinition.Type, externalType, flags, versionAdded)
 {
 }