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)); } }