]> O.S.I.I.S - jp/crow.git/commitdiff
allow private handler methods
authorjpbruyere <jp.bruyere@hotmail.com>
Mon, 12 Oct 2015 12:14:04 +0000 (14:14 +0200)
committerjpbruyere <jp.bruyere@hotmail.com>
Mon, 12 Oct 2015 12:14:04 +0000 (14:14 +0200)
src/CompilerServices/CompilerServices.cs
src/GraphicObjects/GraphicObject.cs

index 07afdaea7bede5127943c2c0dd5388aebe467718..c72137df37c0e920e2f2d2a8bc90978265136a33 100644 (file)
@@ -30,7 +30,7 @@ namespace go
                public bool FindMember(string _memberName)
                {
                        Type t = Instance.GetType ();
-                       Member = t.GetMember (_memberName).FirstOrDefault ();
+                       Member = t.GetMember (_memberName,BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance).FirstOrDefault ();
 
                        #region search for extensions methods if member not found in type
                        if (Member == null && !string.IsNullOrEmpty(_memberName))
index 6e2d726c4dd06bed408385e8b3234c56ff68d15d..5d7e0dae036ee9e9c81883ed4862ff11bb23507a 100644 (file)
@@ -794,6 +794,7 @@ namespace go
                        return Name == "unamed" ? tmp + "." + this.GetType ().Name : tmp + "." + Name;\r
                }\r
 \r
+               #region Binding\r
                public virtual void ResolveBindings()\r
                {\r
                        List<Binding> resolved = new List<Binding> ();\r
@@ -1094,6 +1095,33 @@ namespace go
                        MethodInfo addHandler = binding.Source.Event.GetAddMethod ();\r
                        addHandler.Invoke(this, new object[] {del});\r
                }\r
+               /// <summary>\r
+               /// Remove dynamic delegates by ids from dataSource\r
+               ///  and delete ref of this in Shared interface refs\r
+               /// </summary>\r
+               public virtual void ClearBinding(){\r
+                       foreach (Binding b in Bindings) {\r
+                               if (string.IsNullOrEmpty (b.DynMethodId))\r
+                                       continue;\r
+                               MemberReference mr = null;\r
+                               if (b.Target == null)\r
+                                       mr = b.Source;\r
+                               else\r
+                                       mr = b.Target;\r
+                               Type dataSourceType = mr.Instance.GetType();\r
+                               EventInfo evtInfo = dataSourceType.GetEvent ("ValueChanged");\r
+                               FieldInfo evtFi = CompilerServices.GetEventHandlerField (dataSourceType, "ValueChanged");\r
+                               MulticastDelegate multicastDelegate = evtFi.GetValue (mr.Instance) as MulticastDelegate;\r
+                               if (multicastDelegate != null) {                                \r
+                                       foreach (Delegate d in multicastDelegate.GetInvocationList()) {                                         \r
+                                               if (d.Method.Name == b.DynMethodId)\r
+                                                       evtInfo.RemoveEventHandler (mr.Instance, d);\r
+                                       }\r
+                               }\r
+                               b.Reset ();\r
+                       }\r
+               }\r
+               #endregion\r
 \r
                #region IXmlSerializable\r
                public virtual System.Xml.Schema.XmlSchema GetSchema ()\r
@@ -1277,31 +1305,5 @@ namespace go
                }\r
                #endregion\r
 \r
-               /// <summary>\r
-               /// Remove dynamic delegates by ids from dataSource\r
-               ///  and delete ref of this in Shared interface refs\r
-               /// </summary>\r
-               public virtual void ClearBinding(){\r
-                       foreach (Binding b in Bindings) {\r
-                               if (string.IsNullOrEmpty (b.DynMethodId))\r
-                                       continue;\r
-                               MemberReference mr = null;\r
-                               if (b.Target == null)\r
-                                       mr = b.Source;\r
-                               else\r
-                                       mr = b.Target;\r
-                               Type dataSourceType = mr.Instance.GetType();\r
-                               EventInfo evtInfo = dataSourceType.GetEvent ("ValueChanged");\r
-                               FieldInfo evtFi = CompilerServices.GetEventHandlerField (dataSourceType, "ValueChanged");\r
-                               MulticastDelegate multicastDelegate = evtFi.GetValue (mr.Instance) as MulticastDelegate;\r
-                               if (multicastDelegate != null) {                                \r
-                                       foreach (Delegate d in multicastDelegate.GetInvocationList()) {                                         \r
-                                               if (d.Method.Name == b.DynMethodId)\r
-                                                       evtInfo.RemoveEventHandler (mr.Instance, d);\r
-                                       }\r
-                               }\r
-                               b.Reset ();\r
-                       }\r
-               }\r
        }\r
 }\r