四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

淺談C#中的延遲加載(2)——善用virtual

  之前的文章"淺談C#中的延遲加載(1)——善用委托"中介紹了三層結構中在Model層對實體類的屬性實現延遲加載的方法,該方法利用C#中的委托來實現,最后雖然延遲加載的目的得以實現,但是給客戶端(例如UI層)暴露了不必要的屬性(一個委托對象,我使用了泛型的Fun類來實現)。這篇文章介紹一種方法來隱藏這個屬性,同時又可以達到延遲加載的目的,更重要的是這一切都是在之前的基礎上來完成的,不需要改變原來使用到實體類的地方的代碼。

  按照慣例,我們考慮一下想要我們的代碼達到什么效果:首先在Model.Acticle(文章實體類)中的Category屬性和原來一樣,只在需要的時候通過調用委托來獲取文章所屬分類(Model.ArticleCategory類)。同時這個委托是不被客戶端(例如UI層)代碼看到的。。。設計模式中有一句話,大致的意思是通常在兩個事物之間加上一個中間層,可以把事情變得簡單,于是我們這樣考慮,能不能加多一個中間層來實現呢?

  把Category屬性定義為虛擬的(virtual),去掉委托,繼承Model.Acticle類實現一個子類,把委托放到到這個子類里面來,由個子類里面去實現Category屬性的get選擇器,客戶端訪問的是一個用該子類做實例化的Model.Acticle類對象,這樣一來客戶端代碼訪問的依舊是Model.Acticle類,但是看不到用于實現延遲加載的委托卻又能在Category屬性中獲取到需要的數據。呵呵,由于我是寫文章的人,所以覺得這個思路很好理解,但是看文字的您可能感覺有點暈,下面用代碼來說明應該就清楚了。

  首先我們修改Model.Acticle類,給他瘦身,瘦身結果如下:

c#代碼 
// 文章實體類
  public class Article
 {
 
public int ArticleID { get; set; }
 
public string Title { get; set; }
 
public string Cotnent{ get; set; }
 
public DateTime CreateTime { get; set; }
 
public int CategoryID { get; set; }
 
// 文章所屬分類
  public virtual Model.ArticleCategory Category
 {
get;
}
 }

NET技術淺談C#中的延遲加載(2)——善用virtual,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 男人脱衣服| 金粉蝶| 乔治克鲁尼个人资料| 李英恩| 猫小帅睡前故事| 牵牛花的生长变化记录| 美国要塞1986| 啪啪电影网| 肖红| 雷牧演的所有电视剧和电影| 李乃文宋丹丹朱媛媛演的电视剧| 那些年简谱| 给我| 熊出没之雪岭熊风 电影| 文琪演过的电视剧有哪些| 建设工程监理规范最新版50319-2019| 高天妮| 青岛啤酒价格| 深夜影院一级毛片| 误杀2电影免费观看高清完整版| 爱之梦钢琴谱| 第一次约会电影| 南男北女| 亚洲狠狠爱| 色戒在线观看视频| 婚变电视剧免费观看| 那些年,那些事 电视剧| 02j331| 体现汉字的歇后语| 宇宙战队| 混凝土结构施工质量验收规范gb50204-2015| 美女高跟| 辰巳ゆい| 肖央喜剧电影《情圣》| 拉偏架| 张达| 三年电影免费高清完整版| 陈思敏1一5集国语版在线播放| 江苏诗歌网| 丁莹| 烽火流金电视剧|