程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#利用“反射”給類的屬性賦值

c#利用“反射”給類的屬性賦值

編輯: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);

                            }

                        }

                    }

            }

        }

 

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved