C#을 할당 연산자가 오버로딩을 허용하지 않기 때문에 첫 번째 구문을 달성 할 수있는 기능을 제공하지 않습니다. 당신은하지만, 세터에 대한 전통적인 구문을 사용할 수 있습니다 :
public static void SetPropVal<T>(this object obj, string name, T val) {
if (obj == null) return;
obj.GetType().GetProperty(name)?.SetValue(obj, val);
}
public static T GetPropVal<T>(this object obj, string name) {
if (obj == null) return default(T);
var res = obj.GetType().GetProperty(name)?.GetValue(obj);
return res != null ? (T)res : default(T);
}
참고이 방법은 의미가 있음을 문자열 에서 알 수없는 경우에만 :
여기
myObject.SetPropValue("Address", "blahblah");
는 당신이 그것을 할 수있는 방법입니다 컴파일 시간, 즉 사용자 또는 구성에서옵니다. 문자열이 컴파일 타임에 알려지면 dynamic
으로 캐스팅하면 더 읽기 쉬운 구문으로 동일한 결과를 얻을 수 있습니다.
좋은 점 @LarsTech. 객체로 변경했습니다. – unnknown
유용하다고 생각되는 시나리오가 있습니다. 예를 들어 액세스 할 속성을 런타임에만 알 수있는 동적 시나리오를 생각해보십시오. – unnknown