原来还有dynamic这东西。
??????或許之前看過.net4.0的新特性,或許哪個技術文章或者源代碼中使用了dynamic類型,不過都沒特別注意過它,平時也基本不會和它打交道。今天遇到了個問題,百思不得姐。
先引入dynamic類型的定義:
在通過 dynamic 類型實現的操作中,該類型的作用是繞過編譯時類型檢查, 改為在運行時解析這些操作。
?????? 不同于var,var一般在定義局部變量的時候使用,往往你都不用考慮它是什么類型的變量,你只管使用她就行了。var這個語法糖比較甜,平時用的也比較多。與dynamic類型相反,它是個編譯時就解析這個行為。
?
????? 前臺定義了DataGrid,binding了一個ItemsSource,但是后臺的源不止一個,我想在不同的條件判斷下顯示不同的源。(MVVM下的Demo)
xaml:
<DataGrid ItemsSource = {Binding DataShowItemsSource}/>要binding的兩個源:
//Source Apublic class Student {public int Age { get; set; }public string Name { get; set; }}//Source Bpublic class Course{public string Name { get; set; }public string CourseName { get; set; }}保存這兩個源并且具有通知屬性的集合,毫無疑問binding DataGrid的ItemsSource的屬性也是ObserverableCollection類型的:
ObserverableCollection<Student> studentList; ObserverableCollection<Course> courseList;現在的問題是該ItemsSource到底應該存什么樣的類型,Student?or Course?如果我想做類似的事情,通過條件判斷我就能binding不同的源:
if(A) {ShowDataItemsSource = studentList; } if(B) {ShowDataItemsSource = courceList; }可是ShowDataItemSource有可能是兩種泛型:ObserverableCollection<Student> 或者ObserverableCollection<Course>,但是我們只有在if判斷之后才能明確知道ShowDataItemsSource的具體類型。
?
有了dynamic,只要將DataShowItemsSource類型定義為dynamic就可以在運行時判斷它的類型了。
?
想想如果回到4.0以前,我是不是要考慮建兩個view,或者建兩個DataGird,或者干脆把這兩個數據源對象寫在一起?
?
轉載于:https://www.cnblogs.com/tiny-wang/archive/2012/11/16/2774120.html
總結
以上是生活随笔為你收集整理的原来还有dynamic这东西。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS文件添加 @charset utf
- 下一篇: 没必要这样