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
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
}\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