当前位置:编程学习 > C#/ASP.NET >>

c#利用“反射”给类的属性赋值

 

建立一个class,class里的属性来自一个xml。属性的名字和xml的节点的名字是一样的。为了不一个一个地判断,使用了反射来给每个属性赋值。

 

 

 

class myclass

 {

        //属性设置

        public string profileid { get; set; }

        public string url { get; set; }

        public DateTime startdate { get; set; }

        public bool bonus { get; set; }

        public int max{ get; set; }

 

      //这个函数是内部调用的,所以设置为private。

      private void setProperties()

        {

            string propertyname = "";

            XmlReader xr = XmlReader.Create(@“a.xml”);

            while (xr.Read())

            {

                    if (xr.IsStartElement())

                    {

                        //给属性赋值

                        propertyname = xr.LocalName.ToLower();

                        xr.Read();

                        if (propertyname != "")

                        {

                            //检测一下,属性是否存在。如果存在,才继续赋值。不然会出错。

                            if (this.GetType().GetProperty(propertyname) != null)

                            {

                                //主要是使用了Convert.ChangeType来实现。

                                //但是如果bonus在xml的值是1,就会出错。好像转不到bool型。所以,在xml里,我强制了要写false和true。

                                this.GetType().GetProperty(propertyname).SetValue(this, Convert.ChangeType(xr.Value, this.GetType().GetProperty(propertyname).PropertyType), null);

                            }

                        }

                    }

            }

        }

 

}

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,