} //是否是结构体 public GenerateScorpioClass(Type type) { m_Type = type; IsStruct = !type.IsClass; FullName = ScorpioReflectUtil.GetFullName(m_Type); ScorpioClassName = "ScorpioClass_" + ScorpioReflectUtil.GetGenerateClassName(type); AllFields.AddRange(m_Type.GetFields(ScorpioReflectUtil.BindingFlag)); AllEvents.AddRange(m_Type.GetEvents(ScorpioReflectUtil.BindingFlag)); var propertys = m_Type.GetProperties(ScorpioReflectUtil.BindingFlag); foreach (var property in propertys) { //如果是 get 则参数是0个 set 参数是1个 否则就可能是 [] 的重载 if ((property.CanRead && property.GetGetMethod().GetParameters().Length == 0) || (property.CanWrite && property.GetSetMethod().GetParameters().Length == 1)) { AllPropertys.Add(property); } } var methods = (m_Type.IsAbstract && m_Type.IsSealed) ? m_Type.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) : m_Type.GetMethods(ScorpioReflectUtil.BindingFlag); foreach (var method in methods) { //屏蔽掉 模版函数 模板函数只能使用反射 if (!ScorpioReflectUtil.CheckGenericMethod(method)) { continue; } AllMethods.Add(method); } }
public async Task DoLoadCalendarEventsGrouped(DateTime dStart, DateTime dEnd, int iMax = 0) { try { var newEvents = new SortedDictionary <DateTime, SortedDictionary <DateTime, CalendarEvent> >(); await DoLoadCalendarEventsListed(dStart, dEnd, iMax); int iMs = 0; foreach (CalendarEvent calEvent in ListedDates) { DateTime tFirstDay = calEvent.Start; if (tFirstDay < dStart) { tFirstDay = dStart; } DateTime tLastDay = calEvent.End; if (tFirstDay > dEnd) { tLastDay = dEnd; } for (DateTime tDay = tFirstDay.Date; tDay < tLastDay; tDay = tDay.AddDays(1)) { iMs++; if (!newEvents.ContainsKey(tDay)) { newEvents.Add(tDay, new SortedDictionary <DateTime, CalendarEvent>()); } newEvents[tDay].Add(calEvent.SortTime.AddMilliseconds(iMs), calEvent); } } base.Clear(); int iCount = 0; var allEvents = new List <CalendarEvent>(); var allDatesAndEvents = new List <object>(); foreach (DateTime d in newEvents.Keys) { base[d] = newEvents[d].Values; iCount += newEvents[d].Count; allDatesAndEvents.Add(d); allDatesAndEvents.AddRange(newEvents[d].Values); allEvents.AddRange(newEvents[d].Values); } AllEvents.Clear(); AllEvents.AddRange(allEvents); AllDatesAndEvents.Clear(); AllDatesAndEvents.AddRange(allDatesAndEvents); allEvents.Clear(); allDatesAndEvents.Clear(); } catch (Exception ex) { base.Clear(); ex.ToString(); xLog.Debug("Error reading Calendar Events: " + ex.GetType().Name + ": " + ex.Message); } }