코딩하는 나귀

특정 타입의 필드나 프로퍼티의 값을 읽고 쓰기위한 간단한 함수.


클래스 타입이 다른 다양한 객체의 동일한 타입의 동일한 이름의 

필드나 프로퍼티 값을 바꿔야 할 일에 유용하게 사용할 수 

있습니다.


예를 들어 이미지 버튼과 같이 이미지 버튼 위의 다른 이미지와 

텍스트 색상을 일괄적으로 바꾼다거나 뭐 그런...ㅋ


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