예제 #1
0
        }                                               //是否是结构体
        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);
            }
        }
예제 #2
0
        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);
            }
        }