public override bool TryGetMember(GetMemberBinder binder, out object result) { result = Null; switch (binder.Name) { case "Count": result = _elements.Count; break; default: { var items = _elements.Descendants(XName.Get(binder.Name)).ToList(); if (!items.Any()) { if (_elements.Count == 1) { var attr = _elements[0].Attribute(XName.Get(binder.Name)); if (null != attr) { result = attr.Value; } } } else { result = new DynamicXml(items); } } break; } return true; }
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) { var index = (int)indexes[0]; result = new DynamicXml(_elements[index]); return true; }