]> O.S.I.I.S - jp/crow.git/commitdiff
search for private and public handler methods
authorjpbruyere <jp.bruyere@hotmail.com>
Mon, 2 Jan 2017 14:49:11 +0000 (15:49 +0100)
committerjpbruyere <jp.bruyere@hotmail.com>
Mon, 2 Jan 2017 14:49:11 +0000 (15:49 +0100)
src/CompilerServices/CompilerServices.cs
src/Instantiator.cs

index 42ae5f7b3856c707611b203456e2e58f945672df..e0d6c1e0d31272a162afdde15693a5f0f96d22f5 100644 (file)
@@ -562,9 +562,11 @@ namespace Crow
                }
                internal static Delegate createDel(Type eventType, object instance, string method){
                        Type t = instance.GetType ();
-                       MethodInfo mi = t.GetMethod (method);
-                       if (mi == null)
+                       MethodInfo mi = t.GetMethod (method, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+                       if (mi == null) {
+                               Debug.WriteLine ("Handler Method '{0}' not found in '{1}'", method, t);
                                return null;
+                       }
                        return Delegate.CreateDelegate (eventType, instance, mi);
                }
                public static Delegate compileDynEventHandler(EventInfo sourceEvent, string expression, NodeAddress currentNode = null){
index 402df1cc0e417a68845127ae4f9f3389438d9fec..6aaa7483b8252d0b8c9ef20ed3dabd0bf0db827f 100644 (file)
@@ -358,6 +358,10 @@ namespace Crow
                        NodeAddress sourceNA = ctx.CurrentNodeAddress;
                        BindingDefinition bindingDef = splitBindingExp (sourceNA, sourceMember, expression);
 
+                       #if DEBUG_BINDING
+                       Debug.WriteLine("Property Binding: " + bindingDef.ToString());
+                       #endif
+
                        if (bindingDef.IsDataSourceBinding)//bind on data source
                                emitDataSourceBindings (ctx, bindingDef);
                        else
@@ -427,6 +431,10 @@ namespace Crow
                        NodeAddress currentNode = ctx.CurrentNodeAddress;
                        BindingDefinition bindingDef = splitBindingExp (currentNode, sourceEvent.Name, expression);
 
+                       #if DEBUG_BINDING
+                       Debug.WriteLine("Event Binding: " + bindingDef.ToString());
+                       #endif
+
                        if (bindingDef.IsTemplateBinding | bindingDef.IsDataSourceBinding) {
                                //we need to bind datasource method to source event
                                DynamicMethod dm = new DynamicMethod ("dyn_dschangedForHandler" + NewId,