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); }
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); }
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); } }
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); } }
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); }
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); } }
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); }
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); }
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); } }
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); } } }
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); }
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); } } } } }