[C#] Property가 존재하는지 체크하고 값을 얻는 메서드
2015. 11. 26. 16:55ㆍCoders
시나리오.
dll 여러 개가 조합된 프로그램을 개발하고, 유지보수 하고 있습니다.
그런데, A 라는 dll 내부의 HaHa 라는 클래스에 새로이 OhMyGod 라는 이름의 Property를 추가했습니다. 그리고, 해당 클래스로 생성된 객체를 다른 B 라는 dll 에서 사용을 합니다.
모든 일이라는 게 생각대로 돌아가지 않기 때문에, 자칫 A 라는 dll 은 업데이트가 되질 않고, B 라는 dll만 업데이트 되어 버릴 수가 있지요. 그와 같은 상황이 벌어질 경우, B dll 의 클래스가 A dll 의 HaHa 클래스의 OhMyGod 프로퍼티에 접근하면? 뻑이 나지요.
썰이 길었는데요,
이런 경우를 방지하기 위해선, Reflection 을 통해 해당 Property의 값을 읽어줘야 합니다.
/// <summary> /// 해당 객체에 프로퍼티가 있으면 프로퍼티 값을 리턴 /// </summary> /// <param name="src">오브젝트</param> /// <param name="propName">프로퍼티 명</param> /// <param name="defValue">기본 값</param> /// <returns>읽은 값 또는 Default 값</returns> public static T GetPropValue<T>(object src, string propName, T defValue) { T ret = defValue; try { if (src != null) { System.Reflection.PropertyInfo pi = src.GetType().GetProperty(propName, typeof(T)); ret = (T)Convert.ChangeType(pi.GetValue(src, null), typeof(T)); } } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex); ret = defValue; } return ret; }
쓰는 예제는 이 예제를 응용해 보시길.
엇? 그런데 비슷한 글을 예전에 2회나 썼더군요.
[C#] Class 의 string 프로퍼티 값의 NULL 문자열 제거
그래도, 뭐. 이 글은 그냥 둘게요.
이렇게 기억력이 붕어 입니다.
'Coders' 카테고리의 다른 글
웹폰트 사용 시 IIS 설정. (0) | 2015.12.03 |
---|---|
[Android] 스크롤이 당겨졌을 때 이벤트 (0) | 2015.11.20 |
[MSSQL] INSERT/UPDATE 문에서 값 사용하기 (0) | 2015.09.14 |