public virtual void ExtractPersonalization(Control source) { if (!this.States.ContainsKey(source.ID)) { this.States.Add(source.ID, new PersonalizationDictionary()); } PersonalizationDictionary personalizations = this.States[source.ID]; if (source is ITrackingPersonalizable) { ((ITrackingPersonalizable)source).BeginSave(); } if (source is IPersonalizable) { ((IPersonalizable)source).Save(personalizations); } this.FillPersonalizationDictionary(source, PersonalizableAttribute.GetPersonalizableProperties(source.GetType()), personalizations); if (source is ITrackingPersonalizable) { ((ITrackingPersonalizable)source).EndSave(); } if (!this.States.ContainsKey(source.ID)) { this.States.Add(source.ID, personalizations); } }
public void FillPersonalizationDictionary(Control control, ICollection propertyInfos, PersonalizationDictionary personalizations) { foreach (PropertyInfo propertyInfo in propertyInfos) { PersonalizableAttribute attribute = (PersonalizableAttribute)Attribute.GetCustomAttribute(propertyInfo, typeof(PersonalizableAttribute)); PersonalizationEntry entry = new PersonalizationEntry(ReflectionServices.ExtractValue(control, propertyInfo.Name), attribute.Scope, attribute.IsSensitive); if (!personalizations.Contains(propertyInfo.Name)) { personalizations.Add(propertyInfo.Name, entry); } else { personalizations[propertyInfo.Name] = entry; } } }