반응형
주어진 Type이 Enum인지 확인
Json.NET 용 JsonConverter를 작성하여 열거 형을 [Description] 속성으로 정의 된 문자열 값으로 변환 할 수 있어야합니다.
예를 들면 다음과 같습니다.
public enum MyEnum {
[Description("Sunday")] Sunday,
[Description("Monday")] Monday,
[Description("Tuesday")] Tuesday,
[Description("Wednesday")] Wednesday,
[Description("Thursday")] Thursday,
[Description("Friday")] Friday,
[Description("Saturday")] Saturday
}
이미 myEnum.Description()
문자열 설명을 반환 하는 지원 코드가 이미 있습니다 .
JsonConverter 구현에는 다음과 같은 메소드가 있습니다.
public override bool CanConvert(Type objectType)
{
}
변환기 가이 객체를 변환 할 수 있음을 알 수 있도록 objectType
is 인지 확인 Enum
하고 true를 반환 하는 방법을 알아 내려고 합니다. 나는 많은 것을 가지고 있기 때문에 Enum
, 각각을 명시 적으로 확인할 수 없으므로이를 달성하는보다 일반적인 방법을 원했습니다.
IsEnum
속성을 사용하십시오 .
if(objectType.IsEnum) {
return true;
}
Type.IsEnum 은 당신이 찾고있는 것입니다.
나는 [설명]에 너무 집중하여 질문을 완전히 잘못 해석했기 때문에 특정 열거 형에 [설명] 속성이 있는지 여부를 확인하려는 경우 (존재하지 않을 때 json이 적합을 던지는 경우), 이를 확인하는 한 가지 방법 :
public override bool CanConvert(Type objectType)
{
FieldInfo[] fieldInfo = objectType.GetFields(BindingFlags.Public | BindingFlags.Static);
if( fieldInfo.Length > 0 )
{
return ( fieldInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),false).Length > 0 );
}
else
{
return false;
}
}
참고 URL : https://stackoverflow.com/questions/8045296/check-if-a-given-type-is-an-enum
반응형
'programing tip' 카테고리의 다른 글
정적 메소드가 인스턴스 메소드를 호출하는 C # 컴파일러가 오류 코드를 작성하지 않는 이유는 무엇입니까? (0) | 2020.08.06 |
---|---|
Java 객체를 null로 설정하면 더 이상 아무것도하지 않습니까? (0) | 2020.08.06 |
Android Studio 프로젝트 구조 (vs Eclipse 프로젝트 구조) (0) | 2020.08.05 |
키보드 iPhone-Portrait-NumberPad에 유형 4를 지원하는 키 플레인을 찾을 수 없습니다. (0) | 2020.08.05 |
파이썬에서 type == list 여부 확인 (0) | 2020.08.05 |