ConfigurationSection에있는 ConfigurationProperty 중 하나가 ENUM입니다. .net이이 enum 문자열 값을 구성 파일에서 구문 분석 할 때 대소 문자가 정확히 일치하지 않으면 예외가 throw됩니다..net 사용자 지정 구성 요소 대/소문자를 구분하지 않는 방법 열거 형을 구문 분석합니다. ConfigurationProperty
이 값을 구문 분석 할 때 대소 문자를 무시하지 않습니까? 이 사용
ConfigurationSection에있는 ConfigurationProperty 중 하나가 ENUM입니다. .net이이 enum 문자열 값을 구성 파일에서 구문 분석 할 때 대소 문자가 정확히 일치하지 않으면 예외가 throw됩니다..net 사용자 지정 구성 요소 대/소문자를 구분하지 않는 방법 열거 형을 구문 분석합니다. ConfigurationProperty
이 값을 구문 분석 할 때 대소 문자를 무시하지 않습니까? 이 사용
,이 일을 할 것입니다 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,
}
시도 : true로
이Enum.Parse(enum_type, string_value, true);
마지막 PARAM 세트는 구문 분석 할 때 문자열의 케이스를 무시하도록 지시합니다.
이것은 허용 된 대답이어야합니다. – starbeamrainbowlabs
틀림없이 이것이 올바른 대답입니다! –
원래 질문에 대한 Koda의 의견을 읽어보십시오. 그것은 대/소문자 구분 모드에서 자동으로 구문 분석하는 ConfigurationPropertyAttribute를 사용합니다. Enum.Parse는 직접적으로 사용되지 않습니다. 허용 된 대답 (ConfigurationConvertorBase에서 상속)은 정답입니다. –
MyEnum.TryParse()
에는 IgnoreCase 매개 변수가 true로 설정되어 있습니다.
http://msdn.microsoft.com/en-us/library/dd991317.aspx
UPDATE : 과 같이 구성 섹션은
이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; }
}
}
예 Enum.Parse에 ignorecase 플래그가 있음을 알고 있습니다. 하지만 .net은 ConfigurationPropertyAttribute를 사용할 때이 ConfigurationProperty를 자동으로 구문 분석합니다. – Koda
'Enum.Parse'이 사건을 무시하도록 지시하는 부울을 받아들입니다. – Joey
@teddy 열거 형 멤버가 모두 대문자 인 경우에만 도움이됩니다 ... –
예 Enum.Parse에 ignorecase 플래그가 있음을 알고 있습니다. 하지만 .net은 ConfigurationPropertyAttribute를 사용할 때이 ConfigurationProperty를 자동으로 구문 분석합니다. – Koda