/// <summary> /// Populates the collection of settings by searching for <see cref="CustomizableDomainElementSettingAttribute"/> attributes /// on the embedded relationships of the given element. /// </summary> private static void PopulateFromEmbeddedRelationshipDomainRoleProperties(CustomizableElementSchema element) { DomainClassInfo currentElementInfo = element.GetDomainClass(); // Traverse all embedded domain relationships IEnumerable<DomainRoleInfo> sourceDomainRoleInfos = currentElementInfo.AllDomainRolesPlayed.Where(role => role.IsEmbedding); foreach (DomainRoleInfo sourceDomainRole in sourceDomainRoleInfos) { PropertyInfo sourceRolePropertyType = sourceDomainRole.RolePlayer.ImplementationClass.GetProperty(sourceDomainRole.PropertyName); PropertyInfo attributedRelationshipPropertyType = sourceDomainRole.DomainRelationship.ImplementationClass.GetProperty(sourceDomainRole.Name); if (attributedRelationshipPropertyType != null) { // Create the setting, if the property of the relationsip on the opposite side is attributed CreateSettingForAttribute(element, attributedRelationshipPropertyType, sourceRolePropertyType); } } }
/// <summary> /// Populates the collection of settings by searching for <see cref="CustomizableDomainElementSettingAttribute"/> attributes /// on the domain properties of the given element. /// </summary> private static void PopulateFromOwnedDomainProperties(CustomizableElementSchema element) { DomainClassInfo currentElementInfo = element.GetDomainClass(); // Traverse all domain properties IEnumerable<DomainPropertyInfo> domainPropertyInfos = currentElementInfo.AllDomainProperties; foreach (DomainPropertyInfo domainPropertyInfo in domainPropertyInfos) { PropertyInfo domainPropertyType = domainPropertyInfo.PropertyInfo; // Create the setting, if domain property is attributed CreateSettingForAttribute(element, domainPropertyType, null); } }