aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/CompilerServices
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2016-09-13 14:44:26 +0200
committerjpbruyere <jp.bruyere@hotmail.com>2016-09-13 14:44:26 +0200
commit2616e6ee7a1a34036cc002d28543d0d7a657fdb2 (patch)
treee48dacb4209e95cb963de76cb6fe1ffca07e77c1 /src/CompilerServices
parentb7786bbd327699b0a8dd30d5ca86fc20f28f5617 (diff)
Merge improvements from CrowIDE
modifié : Templates/DirectoryView.template modifié : Templates/Menu.template modifié : Templates/MenuItem.template modifié : Templates/Window.template modifié : Tests/Interfaces/Divers/0.crow modifié : src/CompilerServices/CompilerServices.cs modifié : src/ExtensionsMethods.cs modifié : src/GraphicObjects/DirectoryView.cs modifié : src/GraphicObjects/GraphicObject.cs modifié : src/GraphicObjects/Group.cs modifié : src/GraphicObjects/TreeView.cs modifié : src/GraphicObjects/Wrapper.cs modifié : src/IMLReader.cs modifié : src/Interface.cs modifié : src/ItemTemplate.cs modifié : src/LayoutingQueueItem.cs modifié : src/Measure.cs modifié : src/Point.cs
Diffstat (limited to 'src/CompilerServices')
-rw-r--r--src/CompilerServices/CompilerServices.cs34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/CompilerServices/CompilerServices.cs b/src/CompilerServices/CompilerServices.cs
index d6f036ab..43c9d704 100644
--- a/src/CompilerServices/CompilerServices.cs
+++ b/src/CompilerServices/CompilerServices.cs
@@ -17,15 +17,19 @@ namespace Crow
BindingFlags.NonPublic | BindingFlags.Instance);
static MethodInfo stringEquals = typeof (string).GetMethod
("Equals", new Type [3] { typeof (string), typeof (string), typeof (StringComparison) });
- static FieldInfo fiNewValue = typeof (ValueChangeEventArgs).GetField ("NewValue");
- static FieldInfo fiMbName = typeof (ValueChangeEventArgs).GetField ("MemberName");
- static EventInfo eiValueChanged = typeof (IValueChange).GetEvent ("ValueChanged");
- static Type [] dmValueChangedArgs = { typeof (object), typeof (object),
- eiValueChanged.EventHandlerType.GetMethod ("Invoke").
- GetParameters ()[1].ParameterType };
static MethodInfo miFindByName = typeof (GraphicObject).GetMethod ("FindByName");
+ #region ValueChange Reflexion member info
+ static EventInfo eiValueChange = typeof (IValueChange).GetEvent ("ValueChanged");
+ static MethodInfo miInvokeValueChange = eiValueChange.EventHandlerType.GetMethod ("Invoke");
+ static Type [] argsValueChange = { typeof (object), typeof (object), miInvokeValueChange.GetParameters () [1].ParameterType };
+ static FieldInfo fiNewValue = typeof (ValueChangeEventArgs).GetField ("NewValue");
+ static FieldInfo fiMbName = typeof (ValueChangeEventArgs).GetField ("MemberName");
+ static MethodInfo miValueChangeAdd = eiValueChange.GetAddMethod ();
+ #endregion
+
+
public static void emitSetCurInterface(ILGenerator il){
il.Emit (OpCodes.Ldloc_0);
il.Emit (OpCodes.Ldarg_1);
@@ -229,7 +233,7 @@ namespace Crow
MethodAttributes.Family | MethodAttributes.FamANDAssem | MethodAttributes.NewSlot,
CallingConventions.Standard,
typeof (void),
- dmValueChangedArgs,
+ argsValueChange,
target_Type, true);
il = dm.GetILGenerator (256);
@@ -377,9 +381,8 @@ namespace Crow
il.Emit (OpCodes.Pop);
il.Emit (OpCodes.Ret);
- Delegate del = dm.CreateDelegate (eiValueChanged.EventHandlerType, Bindings [0].Source.Instance);
- MethodInfo addHandler = eiValueChanged.GetAddMethod ();
- addHandler.Invoke (grouped [0].Target.Instance, new object [] { del });
+ Delegate del = dm.CreateDelegate (eiValueChange.EventHandlerType, Bindings [0].Source.Instance);
+ miValueChangeAdd.Invoke (grouped [0].Target.Instance, new object [] { del });
}
}
@@ -589,6 +592,17 @@ namespace Crow
return query;
}
+
+ public static MethodInfo SearchExtMethod(Type t, string methodName){
+ MethodInfo mi = null;
+ mi = GetExtensionMethods (Assembly.GetEntryAssembly(), t)
+ .Where (em => em.Name == methodName).FirstOrDefault ();
+ if (mi != null)
+ return mi;
+
+ return GetExtensionMethods (Assembly.GetExecutingAssembly(), t)
+ .Where (em => em.Name == methodName).FirstOrDefault ();
+ }
}
}