유형 변환기를 사용할 수 있습니다 (오류 검사 없음).
Ship ship = new Ship();
string value = "5.5";
var property = ship.GetType().GetProperty("Latitude");
var convertedValue = property.Converter.ConvertFrom(value);
property.SetValue(self, convertedValue);
코드 구성 측면 에서 다음과 같은 코드를 생성하는 일종의 믹스 인 을 만들 수 있습니다 .
Ship ship = new Ship();
ship.SetPropertyAsString("Latitude", "5.5");
이것은이 코드로 달성 될 것입니다 :
public interface MPropertyAsStringSettable { }
public static class PropertyAsStringSettable {
public static void SetPropertyAsString(
this MPropertyAsStringSettable self, string propertyName, string value) {
var property = TypeDescriptor.GetProperties(self)[propertyName];
var convertedValue = property.Converter.ConvertFrom(value);
property.SetValue(self, convertedValue);
}
}
public class Ship : MPropertyAsStringSettable {
public double Latitude { get; set; }
// ...
}
MPropertyAsStringSettable
많은 다른 클래스에 재사용 할 수 있습니다.
속성 또는 클래스에 연결할 고유 한 사용자 지정 형식 변환기 를 만들 수도 있습니다 .
public class Ship : MPropertyAsStringSettable {
public Latitude Latitude { get; set; }
// ...
}
[TypeConverter(typeof(LatitudeConverter))]
public class Latitude { ... }