1. ホーム
  2. c#

.net カスタム設定 enum ConfigurationProperty を大文字小文字を区別せずに解析する方法

2023-08-21 19:26:28

質問

私のConfigurationSectionにあるConfigurationPropertyの1つは、ENUMです。.netが設定ファイルからこのenum文字列値を解析するとき、ケースが正確に一致しない場合、例外がスローされます。

この値を解析するときに、大文字と小文字を無視する方法はありますか?

どのように解決するのですか?

ConfigurationConverterBase を使って、独自の設定コンバータを作ることができる。 http://msdn.microsoft.com/en-us/library/system.configuration.configurationconverterbase.aspx

をクリックすると、このようになります。

 public class CaseInsensitiveEnumConfigConverter<T> : ConfigurationConverterBase
    {
        public override object ConvertFrom(
        ITypeDescriptorContext ctx, CultureInfo ci, object data)
        {
            return Enum.Parse(typeof(T), (string)data, true);
        }
    }

で、自分の敷地内に

[ConfigurationProperty("unit", DefaultValue = MeasurementUnits.Pixel)]
[TypeConverter(typeof(CaseInsensitiveEnumConfigConverter<MeasurementUnits>))]
public MeasurementUnits Unit { get { return (MeasurementUnits)this["unit"]; } }

public enum MeasurementUnits
{
        Pixel,
        Inches,
        Points,
        MM,
}