public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
string name = binder.Name;
if (String.CompareOrdinal(name, "SelectAll") == 0) {
IEnumerable<XElement> selectedElements = null;
if (args.Length == 0) {
selectedElements = _element.Descendants();
}
else if (args.Length == 1) {
selectedElements = _element.Descendants(args[0].ToString());
}
else {
result = false;
return false;
}
result = new XmlNodeList(selectedElements);
return true;
}
else if (String.CompareOrdinal(name, "SelectChildren") == 0) {
IEnumerable<XElement> selectedElements = null;
if (args.Length == 0) {
selectedElements = _element.Elements();
}
else if (args.Length == 1) {
selectedElements = _element.Elements(args[0].ToString());
}
else {
result = false;
return false;
}
result = new XmlNodeList(selectedElements);
return true;
}
return base.TryInvokeMember(binder, args, out result);
}