Exemple #1
0
                //Try类型方法
                //获取属性的值
                public override bool TryGetMember(GetMemberBinder binder, out object result)//binder类似于this引用。动态的
                {
                    Console.WriteLine("获取成员");
                    XElement subElement = element.Element(binder.Name);

                    if (subElement != null)
                    {
                        result = new DynamicXElement(subElement);
                        return(true);
                    }
                    return(base.TryGetMember(binder, out result));
                }
Exemple #2
0
                static void Main()
                {
                    XDocument doc  = XDocument.Load("books.xml");
                    dynamic   root = DynamicXElement.CreateInstance(doc.Root);

                    Console.WriteLine(root.book[2]["name"]);
                    Console.WriteLine(root.book[1].author[1]);
                    Console.WriteLine(root.book);
                    Console.WriteLine("显示类的成员名:");
                    foreach (string item in root.GetDynamicMemberNames())
                    {
                        Console.WriteLine(item);
                    }
                    Console.ReadKey();
                }
Exemple #3
0
        public void AccessXMLByIndexTest()
        {
            var xml = XDocument.Parse(
                @"<School>
                <Classes>
                    <Class>
                        <Lecture>Expressions</Lecture>
                    </Class>
                    <Class>
                        <Lecture>DynamicProgramming</Lecture>
                    </Class>
                </Classes>
                <Professor>
                     <Name>George</Name>
                     <Lesson>Math</Lesson>
                </Professor>
             </School>");

            dynamic dynamicXML = new DynamicXElement(xml.Element("School"));

            string res = dynamicXML["Classes", 0]["Class", 1]["Lecture", 0].Value;

            Assert.AreEqual("DynamicProgramming", res);
        }