Beispiel #1
0
        private void GenerateConverter(CodeMemberProperty propertyProperty, ConfigurationProperty property)
        {
            CodeAttributeDeclaration converterAttribute = new CodeAttributeDeclaration(GlobalReference(typeof(System.ComponentModel.TypeConverter)));

            propertyProperty.CustomAttributes.Add(converterAttribute);

            CodeTypeOfExpression converterType = null;

            switch (property.TypeConverter)
            {
            case TypeConverters.Custom:
                CustomTypeConverter custom = property.CustomTypeConverter;
                converterType = new CodeTypeOfExpression(GlobalSelfReference(string.Format("{0}.{1}", custom.ConfigurationSectionModel.Namespace, custom.Name)));
                break;

            case TypeConverters.CommaDelimitedStringCollectionConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.CommaDelimitedStringCollectionConverter)));
                break;

            case TypeConverters.GenericEnumConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.GenericEnumConverter)));
                break;

            case TypeConverters.InfiniteIntConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.InfiniteIntConverter)));
                break;

            case TypeConverters.InfiniteTimeSpanConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.InfiniteTimeSpanConverter)));
                break;

            case TypeConverters.TimeSpanMinutesConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanMinutesConverter)));
                break;

            case TypeConverters.TimeSpanMinutesOrInfiniteConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanMinutesOrInfiniteConverter)));
                break;

            case TypeConverters.TimeSpanSecondsConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanSecondsConverter)));
                break;

            case TypeConverters.TimeSpanSecondsOrInfiniteConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanSecondsOrInfiniteConverter)));
                break;

            case TypeConverters.TypeNameConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TypeNameConverter)));
                break;

            case TypeConverters.WhiteSpaceTrimStringConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.WhiteSpaceTrimStringConverter)));
                break;
            }

            converterAttribute.Arguments.Add(new CodeAttributeArgument(converterType));
        }
        private void GenerateConverter(CodeMemberProperty propertyProperty, ConfigurationProperty property)
        {
            CodeAttributeDeclaration converterAttribute = new CodeAttributeDeclaration(GlobalReference(typeof(System.ComponentModel.TypeConverter)));

            propertyProperty.CustomAttributes.Add(converterAttribute);

            CodeTypeOfExpression converterType = null;

            switch (property.TypeConverter)
            {
            case TypeConverters.Custom:
                CustomTypeConverter custom = property.CustomTypeConverter;
                if (custom == null)
                {
                    throw new ApplicationException("The type converter specified is 'Custom', but no valid 'Custom Type Converter' was selected.");
                }
                converterType = new CodeTypeOfExpression(GlobalSelfReference(string.Format("{0}.{1}", custom.ConfigurationSectionModel.Namespace, custom.Name)));
                break;

            case TypeConverters.CommaDelimitedStringCollectionConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.CommaDelimitedStringCollectionConverter)));
                break;

            case TypeConverters.GenericEnumConverter:
                //converterType = new CodeTypeOfExpression( GlobalReference( typeof( System.Configuration.GenericEnumConverter ) ) );
                // The framework automatically calls this for enums, so do not manually set it or else ctor error occurs.
                // http://stackoverflow.com/questions/9687795/error-reading-custom-configuration-section-no-parameterless-constructor-defined
                converterType = null;
                break;

            case TypeConverters.InfiniteIntConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.InfiniteIntConverter)));
                break;

            case TypeConverters.InfiniteTimeSpanConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.InfiniteTimeSpanConverter)));
                break;

            case TypeConverters.TimeSpanMinutesConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanMinutesConverter)));
                break;

            case TypeConverters.TimeSpanMinutesOrInfiniteConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanMinutesOrInfiniteConverter)));
                break;

            case TypeConverters.TimeSpanSecondsConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanSecondsConverter)));
                break;

            case TypeConverters.TimeSpanSecondsOrInfiniteConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TimeSpanSecondsOrInfiniteConverter)));
                break;

            case TypeConverters.TypeNameConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.TypeNameConverter)));
                break;

            case TypeConverters.WhiteSpaceTrimStringConverter:
                converterType = new CodeTypeOfExpression(GlobalReference(typeof(System.Configuration.WhiteSpaceTrimStringConverter)));
                break;
            }
            if (converterType != null)
            {
                converterAttribute.Arguments.Add(new CodeAttributeArgument(converterType));
            }
        }