用反射寫的資料繫結

來源:互聯網
上載者:User

資料繫結感覺挺神奇的,但是也有些局限性,似乎只能綁定DataTable一類的東西。至於資料繫結的原理,也沒查過,個人感覺是反射。基於其局限性和反射技術,自己寫了個用反射原理作成的資料繫結。

 

當然是寫一個擴充TextBox的新的控制項

  1. public partial class UserTextBox : TextBox

實現方法

  1.         /// <summary>
  2.         /// Use Reflect to implement DataBind
  3.         /// </summary>
  4.         /// <param name="propertyName">Property of the UserTextBox</param>
  5.         /// <param name="dataSource">DataSource of the binding data</param>
  6.         /// <param name="dataNumber">Binding which property of the DataSource</param>
  7.         public void DataBindExtend(string propertyName, object dataSource, string dataNumber)
  8.         {
  9.             //Get the type of traget & source
  10.             Type type = typeof(UserTextBox);
  11.             Type typeCont = dataSource.GetType();
  12.             try
  13.             {
  14.                 //Get the property of traget and source
  15.                 PropertyInfo tragetInfo = type.GetProperty(propertyName);
  16.                 PropertyInfo sourceInfo = typeCont.GetProperty(dataNumber);
  17.                 //Get the value of source
  18.                 object sourceValue = sourceInfo.GetValue(dataSource, null);
  19.                 //Set the value to the traget
  20.                 tragetInfo.SetValue(this, sourceValue, null);
  21.             }
  22.             catch (AmbiguousMatchException)
  23.             {
  24.             }
  25.         }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.