// 콜백 함수 내에서 사용되어야 함 internal static IList <T> GetMultiData <T>(this AxKHOpenAPI api) where T : EntityBase { var tAttri = typeof(T).GetCustomAttribute <TransactionAttribute>(true); var properties = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty); var cnt = api.GetRepeatCnt(tAttri.TRCode, tAttri.Name); var datacnt = api.GetDataCount(tAttri.Name); var list = new List <T>(); for (int i = 0; i < cnt; i++) { Console.WriteLine("### Loop = " + i); var entity = Activator.CreateInstance <T>(); foreach (var property in properties) { var cAttri = property.GetCustomAttribute <OutputAttribute>(true); if (cAttri == null) { continue; } var result = api.CommGetData(tAttri.TRCode, "", tAttri.Name, i, cAttri.Name).Trim(); property.SetValue(entity, result); Console.WriteLine("{0},{1},{2},{3} : {4}", i, tAttri.TRCode, tAttri.Name, cAttri.Name, result); } list.Add(entity); } return(list); }
/// <summary> /// [9]설명 Tran 데이터, 실시간 데이터, 체결잔고 데이터를 반환한다. ///입력값<비고> ///반환값 요청 데이터 ///비고 ///○1 Tran 데이터 ///sJongmokCode : Tran명 ///sRealType : 사용안함 ///sFieldName : 레코드명 ///nIndex : 반복인덱스 ///sInnerFieldName: 아이템명 ///○1 실시간 데이터 ///sJongmokCode : Key Code ///sRealType : Real Type ///sFieldName : Item Index ///nIndex : 사용안함 ///sInnerFieldName:사용안함 ///○1 체결 데이터 ///sJongmokCode : 체결구분 ///sRealType : “-1” ///sFieldName : 사용안함 ///nIndex : ItemIndex ///sInnerFieldName:사용안함 ///Ex) ///TR정보 요청 - openApi.CommGetData(“OPT00001”, “”, “주식기본정보”, 0, “현재가”); ///실시간정보 요청 - openApi.CommGetData(“000660”, “A”, 0); ///체결정보 요청 - openApi.CommGetData(“000660”, “-1”, 1); /// </summary> public String CommGetData(String sJongmokCode, String sRealType, String sFieldName, int nIndex, String sInnerFieldName) { String ret = axKHOpenAPI.CommGetData(sJongmokCode, sRealType, sFieldName, nIndex, sInnerFieldName); FileLog.PrintF("CommGetData(" + sJongmokCode + "," + sRealType + "," + sFieldName + "," + nIndex + "," + sInnerFieldName + "):" + ret); return(ret); }