using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Reflection; namespace IControls_FireManager { // 리플렉션 처리는 여기서 전담 //// 참고사항 : 리플렉션은 반드시 인덱서 사용 //// 실제 레포트 데이타 출력시 사용되는 클래스 //// 데이타 (반드시 Indexer 를 사용해야 Reflection 이 동작 되므로 엑티브레포트 데이타 클래스 선언시 주의바람) //public class _Report_Default // 표시 데이타 -> No;IP;Version;OkCnt;ReqCnt;Persent //{ // public string No { get; set; } // public string IP { get; set; } // public string Version { get; set; } // public string OkCnt { get; set; } // public string ReqCnt { get; set; } // public string Persent { get; set; } //} public static class _Reflection { // ArrayList 의 인덱스에 해당하는 멤버변수를 찾아서 값을 가져온다 public static object GetMemberValue_ArrayList_ByClass(ArrayList list, int Index, string key) { // 예외 처리 if (list.Count == 0) return null; // 클래스 멤버변수명 조회 MemberInfo[] ClassMembers = list[Index].GetType().GetMembers(); foreach (MemberInfo item in ClassMembers) { if (item.MemberType == MemberTypes.Property) // 인덱서 속성을 이용 { if (item.Name == key) { MethodInfo ClassFunc = list[Index].GetType().GetMethod("get_" + item.Name); object FieldValue = ClassFunc.Invoke(list[Index], null); return FieldValue; } } } return null; } // 클래스안의 멤버변수명을 조회하여 ArrayLIst 로 추출한다 public static ArrayList GetMemberName_ToArrayList(object data) { ArrayList result = new ArrayList(); // 클래스 멤버변수명 조회 MemberInfo[] ClassMembers = data.GetType().GetMembers(); foreach (MemberInfo item in ClassMembers) if (item.MemberType == MemberTypes.Property) // 인덱서 속성을 이용 result.Add(item.Name); return result; } } }