コード例 #1
0
ファイル: DynamicXml.cs プロジェクト: kuduo/DNT_Utility
        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;
        }
コード例 #2
0
ファイル: DynamicXml.cs プロジェクト: kuduo/DNT_Utility
        public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
        {
            var index = (int)indexes[0];

            result = new DynamicXml(_elements[index]);

            return true;
        }