Exemple #1
0
        /// <summary>
        /// Adds filters below the specified xml element.
        /// </summary>
        /// <param name="root">Filter root element.</param>
        private void AddFiltersFromXml(IFilterChain chain, XElement root)
        {
            if (root == null)
            {
                return;
            }
            foreach (var filterElement in root.Elements().Where(element => element.Name.LocalName == XML_ELEMENT_FILTER))
            {
                var fileFilter = FileFilters.CreateFileFilter(filterElement);
                if (fileFilter != null)
                {
                    // Configure filter mode
                    IInvertibleFileFilter invertibleFileFilter = fileFilter as IInvertibleFileFilter;
                    if (invertibleFileFilter != null)
                    {
                        var modeAttribute = filterElement.Attribute(XML_ATTRIBUTE_MODE);
                        if (modeAttribute != null)
                        {
                            FileFilterMode mode;
                            if (Enum.TryParse <FileFilterMode>(modeAttribute.Value, true, out mode))
                            {
                                invertibleFileFilter.Mode = mode;
                            }
                        }
                    }

                    // Add sub filters, if the filter is a filter chain.
                    IFilterChain filterChain = fileFilter as IFilterChain;
                    if (filterChain != null)
                    {
                        AddFiltersFromXml(filterChain, filterElement);
                    }

                    chain.Filters.Add(fileFilter);
                }
            }
        }