소개: 리플렉션을 통해 프로그래밍 방식으로 개체를 조작하려면 다양한 데이터 유형 할당을 사용하여 속성을 설정해야 하는 경우가 많습니다. 이 질문은 문자열 값으로 속성을 설정하는 일반적인 상황을 탐구합니다.
질문: double 유형의 Latitude 속성이 있는 Ship 클래스를 생각해 보세요. 리플렉션을 사용하여 이 속성을 설정해 보세요. 코드는 다음과 같습니다.
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
그러나 이 코드는 문자열 값을 double로 직접 변환할 수 없기 때문에 ArgumentException과 함께 실패합니다.
해결책: 이 문제를 해결하려면 문자열 값을 PropertyInfo에 따라 올바른 유형으로 명시적으로 변환해야 합니다. 이 목적을 위한 일반적인 도구는 Convert.ChangeType()입니다. 런타임 정보를 사용하여 IConvertible 유형 간에 변환합니다.
Convert.ChangeType()을 사용하여 수정된 코드는 다음과 같습니다.
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
이 코드는 Latitude 속성을 변환된 double 값으로 성공적으로 설정했습니다.
위 내용은 값이 문자열인 경우 리플렉션을 사용하여 속성 값을 어떻게 설정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!