static ExtendedSearchAspect()
        {
            var    values = ConvertUtilities.EnumEnumerateValues <FilterFunctions>();
            string filterFunctionEditorTypeName = "enum:";

            foreach (var value in values)
            {
                filterFunctionEditorTypeName += string.Format("{0}={1},", value, (int)value);
            }

            filterFunctionEditorTypeName = filterFunctionEditorTypeName.TrimEnd(';');
            string multiValueFilterFunctionEditorTypeName = "mv" + filterFunctionEditorTypeName;

            Descriptor = new XmlDocument();
            Descriptor.LoadXml(
                @"<cf:project xmlns:cf='http://www.softfluent.com/codefluent/2005/1' defaultNamespace='ExtendedSearchAspect'>
                    <cf:pattern name='Extended Search Aspect' namespaceUri='" + NamespaceUri + @"' preferredPrefix='" + PreferredPrefix + @"' step='Start'>
                        <cf:message class='_doc'>
                        SoftFluent Samples - Extended Search Aspect
                        This aspect is used to customize Search methods. It modifies methods (BOM and SQL) to support dynamic filter functions (Equals, StartsWith, EndsWith, Contains, FreeText, ...)
                        </cf:message>

                        <cf:descriptor name='defaultEnabled' 
                                targets='Project, Entity' 
                                defaultValue='false' 
                                displayName='Default is Enabled' 
                                typeName='boolean' 
                                category='Extended Search Aspect' />
                        
                        <cf:descriptor name='enabled' 
                                targets='Method, Parameter' 
                                defaultValue='false' 
                                displayName='Is Enabled' 
                                typeName='boolean' 
                                category='Extended Search Aspect' />

                        <cf:descriptor name='defaultParameterNameFormat' 
                                targets='Project, Entity, Method' 
                                defaultValue='" + DefaultParameterNameFormat + @"' 
                                displayName='Default Parameter Name Format' 
                                typeName='string' 
                                category='Extended Search Aspect' />
                        
                        <cf:descriptor name='parameterNameFormat' 
                                targets='Parameter' 
                                defaultValue='" + DefaultParameterNameFormat + @"' 
                                displayName='Parameter Name Format' 
                                typeName='string' 
                                category='Extended Search Aspect' />

                        <cf:descriptor name='defaultFilterFunctions' 
                                targets='Project, Entity, Method' 
                                defaultValue='" + DefaultFilterFunctions.ToString() + @"' 
                                displayName='Default Filter Functions' 
                                editorTypeName='" + multiValueFilterFunctionEditorTypeName + @"' 
                                category='Extended Search Aspect' />

                        <cf:descriptor name='filterFunctions' 
                                targets='Parameter' 
                                defaultValue='" + DefaultFilterFunctions.ToString() + @"' 
                                displayName='Filter Functions' 
                                editorTypeName='" + multiValueFilterFunctionEditorTypeName + @"' 
                                category='Extended Search Aspect' />

                        <cf:descriptor name='isFilterFunctionsEnumeration' 
                                targets='Enumeration' 
                                defaultValue='false' 
                                displayName='Is Filter Functions Enumeration' 
                                typeName='boolean' 
                                category='Extended Search Aspect' />

                        <cf:descriptor name='filterFunction' 
                                targets='EnumerationValue' 
                                defaultValue='None' 
                                displayName='Filter Function' 
                                editorTypeName='" + filterFunctionEditorTypeName + @"' 
                                category='Extended Search Aspect' />

                        <cf:descriptor name='createMultiValuedEnumeration' 
                                targets='Project' 
                                defaultValue='true' 
                                displayName='Create multi-valued enumeration' 
                                typeName='boolean' 
                                category='Extended Search Aspect' />
                  </cf:pattern>
                </cf:project>");
        }