Exemple #1
0
        public CNamedEvent FindNamedEventTemplate(List <CMethodBase> methods, string eventName)
        {
            CStringID eventID = new CStringID(eventName);

            //reverse, so the event in the derived class can override the one in the base class
            for (int i = methods.Count - 1; i >= 0; --i)
            {
                CMethodBase pMethod    = methods[i];
                string      methodName = pMethod.Name;
                CStringID   methodID   = new CStringID(methodName);
                if (methodID == eventID && pMethod.IsNamedEvent())
                {
                    Debug.Check(pMethod is CNamedEvent);
                    CNamedEvent pNamedMethod = (CNamedEvent)pMethod;

                    if (pNamedMethod.IsStatic())
                    {
                        InsertEventGlobal(pNamedMethod.GetClassNameString(), pNamedMethod);
                        return(pNamedMethod);
                    }

                    return(pNamedMethod);
                }
            }

            return(null);
        }
Exemple #2
0
        public CNamedEvent FindNamedEventTemplate(ListView <CMethodBase> methods, string eventName)
        {
            CStringID b = new CStringID(eventName);
            int       i = methods.get_Count() - 1;

            while (i >= 0)
            {
                CMethodBase cMethodBase = methods.get_Item(i);
                string      name        = cMethodBase.GetName();
                CStringID   a           = new CStringID(name);
                if (a == b && cMethodBase.IsNamedEvent())
                {
                    CNamedEvent cNamedEvent = (CNamedEvent)cMethodBase;
                    if (cNamedEvent.IsStatic())
                    {
                        this.InsertEventGlobal(cNamedEvent.GetClassNameString(), cNamedEvent);
                        return(cNamedEvent);
                    }
                    return(cNamedEvent);
                }
                else
                {
                    i--;
                }
            }
            return(null);
        }
Exemple #3
0
 public void InsertEventGlobal(string className, CNamedEvent pEvent)
 {
     if (this.FindEventStatic(className, pEvent.GetName()) == null)
     {
         if (!this.ms_eventInfosGlobal.ContainsKey(className))
         {
             this.ms_eventInfosGlobal.Add(className, new DictionaryView <CStringID, CNamedEvent>());
         }
         DictionaryView <CStringID, CNamedEvent> dictionaryView = this.ms_eventInfosGlobal.get_Item(className);
         CNamedEvent cNamedEvent = (CNamedEvent)pEvent.clone();
         CStringID   cStringID   = new CStringID(cNamedEvent.GetName());
         dictionaryView.Add(cStringID, cNamedEvent);
     }
 }
Exemple #4
0
        public void FireEvent(string eventName)
        {
            CNamedEvent event2 = this.findEvent(eventName);

            if (event2 == null)
            {
                int contextId = this.GetContextId();
                event2 = findNamedEventTemplate(this.GetDescriptor().ms_methods, eventName, contextId);
            }
            if (event2 != null)
            {
                event2.SetFired(this, true);
            }
        }
Exemple #5
0
 public void InsertEventGlobal(string className, CNamedEvent pEvent)
 {
     if (this.FindEventStatic(className, pEvent.GetName()) == null)
     {
         if (!this.ms_eventInfosGlobal.ContainsKey(className))
         {
             this.ms_eventInfosGlobal.Add(className, new DictionaryView <CStringID, CNamedEvent>());
         }
         DictionaryView <CStringID, CNamedEvent> view = this.ms_eventInfosGlobal[className];
         CNamedEvent event3 = (CNamedEvent)pEvent.clone();
         CStringID   key    = new CStringID(event3.GetName());
         view.Add(key, event3);
     }
 }
        public void FireEvent(string eventName)
        {
            CNamedEvent cNamedEvent = this.findEvent(eventName);

            if (cNamedEvent == null)
            {
                int contextId = this.GetContextId();
                Agent.CTagObjectDescriptor descriptor = this.GetDescriptor();
                cNamedEvent = Agent.findNamedEventTemplate(descriptor.ms_methods, eventName, contextId);
            }
            if (cNamedEvent != null)
            {
                cNamedEvent.SetFired(this, true);
            }
        }
        private CNamedEvent findEvent(string eventName)
        {
            Agent.CTagObjectDescriptor descriptor = this.GetDescriptor();
            int         contextId   = this.GetContextId();
            CNamedEvent cNamedEvent = Agent.findNamedEventTemplate(descriptor.ms_methods, eventName, contextId);

            if (cNamedEvent != null)
            {
                CNamedEvent cNamedEvent2 = (CNamedEvent)cNamedEvent.clone();
                CStringID   key          = new CStringID(eventName);
                this.EventInfos[key] = cNamedEvent2;
                return(cNamedEvent2);
            }
            return(null);
        }
Exemple #8
0
        public void FireEvent <ParamType1, ParamType2, ParamType3>(string eventName, ParamType1 param1, ParamType2 param2, ParamType3 param3)
        {
            CNamedEvent event2 = this.findEvent(eventName);

            if (event2 == null)
            {
                int contextId = this.GetContextId();
                event2 = findNamedEventTemplate(this.GetDescriptor().ms_methods, eventName, contextId);
            }
            if (event2 != null)
            {
                event2.SetParam <ParamType1, ParamType2, ParamType3>(this, param1, param2, param3);
                event2.SetFired(this, true);
            }
        }
Exemple #9
0
        private CNamedEvent findEvent(string eventName)
        {
            CTagObjectDescriptor descriptor = this.GetDescriptor();
            int         contextId           = this.GetContextId();
            CNamedEvent event2 = findNamedEventTemplate(descriptor.ms_methods, eventName, contextId);

            if (event2 != null)
            {
                CNamedEvent event3 = (CNamedEvent)event2.clone();
                CStringID   gid    = new CStringID(eventName);
                this.EventInfos[gid] = event3;
                return(event3);
            }
            return(null);
        }
Exemple #10
0
        public CNamedEvent FindEventStatic(string eventName, string className)
        {
            if (ms_eventInfosGlobal.ContainsKey(className))
            {
                Dictionary <CStringID, CNamedEvent> events = ms_eventInfosGlobal[className];
                CStringID eventID = new CStringID(eventName);

                if (events.ContainsKey(eventID))
                {
                    CNamedEvent pEvent = events[eventID];
                    return(pEvent);
                }
            }

            return(null);
        }
Exemple #11
0
        public void InsertEventGlobal(string className, CNamedEvent pEvent)
        {
            CNamedEvent toFind = FindEventStatic(className, pEvent.Name);

            if (toFind == null)
            {
                if (!ms_eventInfosGlobal.ContainsKey(className))
                {
                    ms_eventInfosGlobal.Add(className, new Dictionary <CStringID, CNamedEvent>());
                }

                Dictionary <CStringID, CNamedEvent> events = ms_eventInfosGlobal[className];

                CNamedEvent e       = (CNamedEvent)pEvent.clone();
                CStringID   eventId = new CStringID(e.Name);
                events.Add(eventId, e);
            }
        }
Exemple #12
0
        public void ResetEvent(string eventName)
        {
            CStringID key = new CStringID(eventName);

            if (this.EventInfos.ContainsKey(key))
            {
                this.EventInfos[key].SetFired(this, false);
            }
            else
            {
                int         contextId = this.GetContextId();
                CNamedEvent event3    = findNamedEventTemplate(this.GetDescriptor().ms_methods, eventName, contextId);
                if (event3 != null)
                {
                    event3.SetFired(this, false);
                }
            }
        }
Exemple #13
0
        public CNamedEvent FindNamedEventTemplate(ListView <CMethodBase> methods, string eventName)
        {
            CStringID gid = new CStringID(eventName);

            for (int i = methods.Count - 1; i >= 0; i--)
            {
                CMethodBase base2 = methods[i];
                string      name  = base2.GetName();
                CStringID   gid2  = new CStringID(name);
                if ((gid2 == gid) && base2.IsNamedEvent())
                {
                    CNamedEvent pEvent = (CNamedEvent)base2;
                    if (pEvent.IsStatic())
                    {
                        this.InsertEventGlobal(pEvent.GetClassNameString(), pEvent);
                        return(pEvent);
                    }
                    return(pEvent);
                }
            }
            return(null);
        }
Exemple #14
0
 private static void RegisterType(Type type, bool bIsAgentType)
 {
     Attribute[] array = (Attribute[])type.GetCustomAttributes(typeof(TypeMetaInfoAttribute), false);
     if (!bIsAgentType || array.Length > 0)
     {
         TypeMetaInfoAttribute      typeMetaInfoAttribute = (array.Length <= 0) ? null : ((TypeMetaInfoAttribute)array[0]);
         Agent.CTagObjectDescriptor descriptorByName      = Agent.GetDescriptorByName(type.get_FullName());
         if (type.get_BaseType() == typeof(Agent) || type.get_BaseType().IsSubclassOf(typeof(Agent)))
         {
             Agent.CTagObjectDescriptor descriptorByName2 = Agent.GetDescriptorByName(type.get_BaseType().get_FullName());
             descriptorByName.m_parent = descriptorByName2;
         }
         descriptorByName.type        = type;
         descriptorByName.displayName = ((typeMetaInfoAttribute != null && !string.IsNullOrEmpty(typeMetaInfoAttribute.DisplayName)) ? typeMetaInfoAttribute.DisplayName : type.get_FullName());
         descriptorByName.desc        = ((typeMetaInfoAttribute != null && !string.IsNullOrEmpty(typeMetaInfoAttribute.Description)) ? typeMetaInfoAttribute.Description : descriptorByName.displayName);
         if (Utils.IsEnumType(type))
         {
             return;
         }
         BindingFlags bindingFlags = 62;
         FieldInfo[]  fields       = type.GetFields(bindingFlags);
         FieldInfo[]  array2       = fields;
         for (int i = 0; i < array2.Length; i++)
         {
             FieldInfo fieldInfo       = array2[i];
             bool      flag            = false;
             MemberMetaInfoAttribute a = null;
             if (bIsAgentType)
             {
                 Attribute[] array3 = (Attribute[])fieldInfo.GetCustomAttributes(typeof(MemberMetaInfoAttribute), false);
                 if (array3.Length > 0)
                 {
                     a    = (MemberMetaInfoAttribute)array3[0];
                     flag = true;
                 }
             }
             else
             {
                 flag = true;
             }
             if (flag)
             {
                 CMemberBase cMemberBase = new CMemberBase(fieldInfo, a);
                 for (int j = 0; j < descriptorByName.ms_members.get_Count(); j++)
                 {
                     if (cMemberBase.GetId() == descriptorByName.ms_members.get_Item(j).GetId())
                     {
                         CMemberBase cMemberBase2 = descriptorByName.ms_members.get_Item(j);
                         break;
                     }
                 }
                 descriptorByName.ms_members.Add(cMemberBase);
                 if ((Utils.IsCustomClassType(fieldInfo.get_FieldType()) || Utils.IsEnumType(fieldInfo.get_FieldType())) && !Agent.IsTypeRegisterd(fieldInfo.get_FieldType().get_FullName()))
                 {
                     Workspace.RegisterType(fieldInfo.get_FieldType(), false);
                 }
             }
         }
         if (bIsAgentType)
         {
             MethodInfo[] methods = type.GetMethods(bindingFlags);
             MethodInfo[] array4  = methods;
             for (int k = 0; k < array4.Length; k++)
             {
                 MethodInfo  methodInfo = array4[k];
                 Attribute[] array5     = (Attribute[])methodInfo.GetCustomAttributes(typeof(MethodMetaInfoAttribute), false);
                 if (array5.Length > 0)
                 {
                     MethodMetaInfoAttribute a2          = (MethodMetaInfoAttribute)array5[0];
                     CMethodBase             cMethodBase = new CMethodBase(methodInfo, a2, null);
                     descriptorByName.ms_methods.Add(cMethodBase);
                     ParameterInfo[] parameters = methodInfo.GetParameters();
                     ParameterInfo[] array6     = parameters;
                     for (int l = 0; l < array6.Length; l++)
                     {
                         ParameterInfo parameterInfo = array6[l];
                         if ((Utils.IsCustomClassType(parameterInfo.get_ParameterType()) || Utils.IsEnumType(parameterInfo.get_ParameterType())) && !Agent.IsTypeRegisterd(parameterInfo.get_ParameterType().get_FullName()))
                         {
                             Workspace.RegisterType(parameterInfo.get_ParameterType(), false);
                         }
                     }
                     if ((Utils.IsCustomClassType(methodInfo.get_ReturnType()) || Utils.IsEnumType(methodInfo.get_ReturnType())) && !Agent.IsTypeRegisterd(methodInfo.get_ReturnType().get_FullName()))
                     {
                         Workspace.RegisterType(methodInfo.get_ReturnType(), false);
                     }
                 }
             }
             Type[] nestedTypes = type.GetNestedTypes(bindingFlags);
             Type[] array7      = nestedTypes;
             for (int m = 0; m < array7.Length; m++)
             {
                 Type        type2  = array7[m];
                 Attribute[] array8 = (Attribute[])type2.GetCustomAttributes(typeof(EventMetaInfoAttribute), false);
                 if (array8.Length > 0)
                 {
                     EventMetaInfoAttribute a3          = (EventMetaInfoAttribute)array8[0];
                     MethodInfo             method      = type2.GetMethod("Invoke");
                     CNamedEvent            cNamedEvent = new CNamedEvent(method, a3, type2.get_Name());
                     descriptorByName.ms_methods.Add(cNamedEvent);
                 }
             }
         }
     }
 }