사용자 지정 유효성 검사를 수행하기 위해 개체 트리를 동적으로 구문 분석하고 싶습니다. 유효성 검사는 그렇게 중요하지 않지만 PropertyInfo 클래스를 더 잘 이해하고 싶습니다.
이런 식으로 할 것입니다.
public bool ValidateData(object data)
{
foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
{
if (the property is a string)
{
string value = propertyInfo.GetValue(data, null);
if value is not OK
{
return false;
}
}
}
return true;
}
현재 내가 신경 쓰는 유일한 부분은 ‘속성이 문자열 인 경우’입니다. PropertyInfo 객체에서 유형이 무엇인지 어떻게 알 수 있습니까?
나는 문자열, 정수, 복식과 같은 기본적인 것들을 다루어야 할 것입니다. 그러나 나는 또한 객체를 다루어야 할 것이고, 그렇다면 객체 내부의 기본 데이터를 검증하기 위해 객체 트리를 더 아래로 탐색해야 할 경우 문자열 등도 가질 것입니다.
감사.
답변
PropertyInfo.PropertyType
속성의 유형을 가져 오는 데 사용 합니다.
public bool ValidateData(object data)
{
foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
{
if (propertyInfo.PropertyType == typeof(string))
{
string value = propertyInfo.GetValue(data, null);
if value is not OK
{
return false;
}
}
}
return true;
}
답변
나는 방금이 훌륭한 게시물을 우연히 발견했습니다. 데이터가 문자열 유형인지 확인하는 경우 루프를 건너 뛰고이 구조체를 사용할 수 있습니다 (내 겸손한 의견으로는)
public static bool IsStringType(object data)
{
return (data.GetType().GetProperties().Where(x => x.PropertyType == typeof(string)).FirstOrDefault() != null);
}