예제 #1
0
        private void MergeHierarchy(IConfigurationUIHierarchy configurationHierarhcy, Dictionary <string, ConfigurationNodeMergeData> mergeDataByPath)
        {
            string rootNodeName = configurationHierarhcy.RootNode.Name;

            foreach (String configurationNodePath in mergeDataByPath.Keys)
            {
                ConfigurationNodeMergeData mergeData = mergeDataByPath[configurationNodePath];
                if (mergeData.OverrideProperties)
                {
                    ConfigurationNode node = configurationHierarhcy.FindNodeByPath(rootNodeName + configurationNodePath);
                    if (node != null)
                    {
                        PropertyDescriptorCollection propertiesOnNode = TypeDescriptor.GetProperties(node);
                        foreach (PropertyDescriptor property in propertiesOnNode)
                        {
                            object propertyValue = mergeData.GetPropertyValue(property.Name, property.PropertyType, property.GetValue(node), configurationHierarhcy);
                            property.SetValue(node, propertyValue);
                        }
                    }
                }
            }
        }
예제 #2
0
        private void CopyEnvironmentOverrides(EnvironmentMergeSection environmentMergeSection, Dictionary <string, ConfigurationNodeMergeData> mergeDataByPath, IConfigurationUIHierarchy configurationHierarchy)
        {
            foreach (string path in mergeDataByPath.Keys)
            {
                ConfigurationNodeMergeData mergeData = mergeDataByPath[path];

                EnvironmentNodeMergeElement mergeElement = new EnvironmentNodeMergeElement();
                mergeElement.ConfigurationNodePath = path;
                mergeElement.OverrideProperties    = mergeData.OverrideProperties;

                foreach (string propertyName in mergeData.AllPropertyNames)
                {
                    object propertyValue            = mergeData.GetPropertyValue(propertyName, typeof(string), null, configurationHierarchy);
                    string serializedRepresentation = SerializationUtility.SerializeToString(propertyValue, configurationHierarchy);

                    NameValueConfigurationElement keyValue = new NameValueConfigurationElement(propertyName, serializedRepresentation);
                    mergeElement.OverriddenProperties.Add(keyValue);
                }

                environmentMergeSection.MergeElements.Add(mergeElement);
            }
        }