반응형
.net 사용자 지정 구성 enum ConfigurationProperty를 구문 분석하는 대 / 소문자를 구분하지 않는 방법
내 ConfigurationSection에있는 ConfigurationProperty 중 하나는 ENUM입니다. .net이 구성 파일에서이 열거 형 문자열 값을 구문 분석 할 때 대소 문자가 정확히 일치하지 않으면 예외가 발생합니다.
이 값을 구문 분석 할 때 대소 문자를 무시할 수 있습니까?
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,
}
이것을 사용해보십시오 :
Enum.Parse(enum_type, string_value, true);
true로 설정된 마지막 매개 변수는 구문 분석 할 때 문자열 대소 문자를 무시하도록 지시합니다.
MyEnum.TryParse()
IgnoreCase 매개 변수가있는 경우 true로 설정하십시오.
http://msdn.microsoft.com/en-us/library/dd991317.aspx
업데이트 : 이와 같은 구성 섹션을 정의하면 작동합니다.
public class CustomConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("myEnumProperty", DefaultValue = MyEnum.Item1, IsRequired = true)]
public MyEnum SomeProperty
{
get
{
MyEnum tmp;
return Enum.TryParse((string)this["myEnumProperty"],true,out tmp)?tmp:MyEnum.Item1;
}
set
{ this["myEnumProperty"] = value; }
}
}
반응형
'programing' 카테고리의 다른 글
다른 테이블 값을 기반으로하는 MySQL 업데이트 테이블 (0) | 2021.01.17 |
---|---|
내 애플리케이션에 AsyncTask 또는 IntentService를 사용해야합니까? (0) | 2021.01.17 |
Datatables 경고 (table id = 'example') : 데이터 테이블을 다시 초기화 할 수 없습니다. (0) | 2021.01.16 |
envsubst : Mac OS X 10.8에서 명령을 찾을 수 없음 (0) | 2021.01.16 |
MATLAB의 장점은 무엇입니까? (0) | 2021.01.16 |