天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

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

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

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

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技術(shù)淺談C#中的延遲加載(2)——善用virtual,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 中文字幕va一区二区三区 | 国产精品自产拍在线观看中文 | 国产成人精品自拍 | 伊人不卡久久大香线蕉综合影院 | 看全色黄大色大片免费久黄久 | 影音先锋色av男人资源网 | 精品丰满人妻无套内射 | 欧美一区二区视频97色伦 | 麻豆一二三区果冻 | 欧美国产成人在线 | jk制服喷水 | 人人澡人人爽人人精品 | 亚洲国产精品99久久久久久 | 叔叔 电影完整版免费观看韩国 | 琪琪婷婷五月色综合久久 | 大胸女晃奶动态图 | 纯肉巨黄H爆粗口男男分卷阅读 | 好大太快了快插穿子宫了 | 国产手机在线视频 | 成年视频xxxxxx在线 | 高清撒尿hdtube撒尿 | 亚洲精品高清AV在线播放 | 嗯啊…嗯np男男双性总受 | 秋霞电影网午夜鲁丝片 | 久久大香萑太香蕉av | 女人被躁到高潮嗷嗷叫69 | 耻辱诊察室1一4集动漫在线观看 | 日本无卡无吗在线 | 成人天堂婷婷青青视频在线观看 | 一本二卡三卡四卡乱码麻豆 | 538久久视频在线 | 国产在线视频一区二区不卡 | 男人J桶女人P视频无遮挡网站 | 精品香蕉99久久久久网站 | 交换邻居波多野结衣中文字幕 | 美国一级黄色 | 快穿做妓女好爽H | 久久伊人在 | J午夜精品久久久久久毛片 jzz大全18 | 波多野结衣的AV一区二区三区 | 中文字幕一区二区三区在线播放 |