리플렉션 응용 (C# Reflection)
특정 타입의 필드나 프로퍼티의 값을 읽고 쓰기위한 간단한 함수.
클래스 타입이 다른 다양한 객체의 동일한 타입의 동일한 이름의
필드나 프로퍼티 값을 바꿔야 할 일에 유용하게 사용할 수
있습니다.
예를 들어 이미지 버튼과 같이 이미지 버튼 위의 다른 이미지와
텍스트 색상을 일괄적으로 바꾼다거나 뭐 그런...ㅋ
using System.Reflection;
public static bool GetMemberValue<T> (object target, string propName, out T val) {
FieldInfo fi = target.GetType().GetField(propName);
if ((fi != null) && (fi.FieldType == typeof(T))) {
val = (T)fi.GetValue(target);
return true;
}
PropertyInfo pi = target.GetType().GetProperty(propName);
if ((pi != null) && (pi.PropertyType == typeof(T))) {
val = (T)pi.GetValue(target, null);
return true;
}
val = default(T);
return false;
}
public static bool SetMemberValue<T> (object target, string propName, T val) {
FieldInfo fi = target.GetType().GetField(propName);
if ((fi != null) && (fi.FieldType == typeof(T))) {
fi.SetValue(target, val);
return true;
}
PropertyInfo pi = target.GetType().GetProperty(propName);
if ((pi != null) && (pi.PropertyType == typeof(T))) {
pi.SetValue(target, val, null);
return true;
}
return false;
}
}
'Unity' 카테고리의 다른 글
[Shader] 그라데이션 (Gradient) (0) | 2015.11.19 |
---|---|
[Struct] Point (0) | 2015.11.07 |
[Struct] Size (0) | 2015.11.07 |
[Shader] 텍스처 회전 (Texture Rotation) (0) | 2015.09.08 |
C# 리스트(List)를 이용해 만든 우선순위큐(PriorityQueue) (0) | 2015.07.23 |
MonoBehaviour Lifecycle (0) | 2014.06.30 |
Android Local Notification Plugin (0) | 2013.04.23 |
포물선 공식 (0) | 2013.01.21 |
케릭터 점프 코드 (0) | 2013.01.15 |
드레그한 방향 알아내기 (0) | 2013.01.15 |