public void Dispose() { if (next != null) { next.Dispose(); next = null; } ReleaseListenerChanged(); }
public static PropertyBinder Create(string path) { PropertyBinder first = null; if (string.IsNullOrEmpty(path) || path == ".") { first = new PropertyBinder(null); first.first = first; first.last = first; return(first); } string[] propertys = path.Split('.'); PropertyBinder last = null; foreach (var p in propertys) { var parts = p.Trim().Split('['); string propName; for (int i = 0; i < parts.Length; i++) { propName = parts[i].Trim(); if (propName.Length == 0) { continue; } bool isIndexer = false; if (i > 0) { propName = propName.Substring(0, propName.Length - 1); isIndexer = true; } PropertyBinder binder = new PropertyBinder(propName, isIndexer); if (first == null) { first = binder; } else { last.next = binder; } last = binder; } } PropertyBinder current = first; while (current != null) { current.first = first; current.last = last; current = current.next; } return(first); }