6932479f86708439d59d657f3f28520a8707dce5.svn-base 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;
  6. using System.Reflection;
  7. namespace IControls_FireManager
  8. {
  9. // 리플렉션 처리는 여기서 전담
  10. //// 참고사항 : 리플렉션은 반드시 인덱서 사용
  11. //// 실제 레포트 데이타 출력시 사용되는 클래스
  12. //// 데이타 (반드시 Indexer 를 사용해야 Reflection 이 동작 되므로 엑티브레포트 데이타 클래스 선언시 주의바람)
  13. //public class _Report_Default // 표시 데이타 -> No;IP;Version;OkCnt;ReqCnt;Persent
  14. //{
  15. // public string No { get; set; }
  16. // public string IP { get; set; }
  17. // public string Version { get; set; }
  18. // public string OkCnt { get; set; }
  19. // public string ReqCnt { get; set; }
  20. // public string Persent { get; set; }
  21. //}
  22. public static class _Reflection
  23. {
  24. // ArrayList 의 인덱스에 해당하는 멤버변수를 찾아서 값을 가져온다
  25. public static object GetMemberValue_ArrayList_ByClass(ArrayList list, int Index, string key)
  26. {
  27. // 예외 처리
  28. if (list.Count == 0) return null;
  29. // 클래스 멤버변수명 조회
  30. MemberInfo[] ClassMembers = list[Index].GetType().GetMembers();
  31. foreach (MemberInfo item in ClassMembers)
  32. {
  33. if (item.MemberType == MemberTypes.Property) // 인덱서 속성을 이용
  34. {
  35. if (item.Name == key)
  36. {
  37. MethodInfo ClassFunc = list[Index].GetType().GetMethod("get_" + item.Name);
  38. object FieldValue = ClassFunc.Invoke(list[Index], null);
  39. return FieldValue;
  40. }
  41. }
  42. }
  43. return null;
  44. }
  45. // 클래스안의 멤버변수명을 조회하여 ArrayLIst 로 추출한다
  46. public static ArrayList GetMemberName_ToArrayList(object data)
  47. {
  48. ArrayList result = new ArrayList();
  49. // 클래스 멤버변수명 조회
  50. MemberInfo[] ClassMembers = data.GetType().GetMembers();
  51. foreach (MemberInfo item in ClassMembers)
  52. if (item.MemberType == MemberTypes.Property) // 인덱서 속성을 이용
  53. result.Add(item.Name);
  54. return result;
  55. }
  56. }
  57. }