一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

從數據到代碼—基于T4的代碼生成方式

  在之前寫一篇文章《從數據到代碼》(上篇下篇)中,我通過基于CodeDOM+Custom Tool的代碼生成方式實現了將一個XML表示的消息列表轉換成了相應的C#代碼,從而達到了強類型編程的目的。實際上,我們最常用的代碼生成當時不是CodeDOM,而是T4,這是一個更為強大,并且適用范圍更廣的代碼生成技術。今天,我將相同的例子通過T4的方式再實現一次,希望為那些對T4不了解的讀者帶來一些啟示。同時這篇文章將作為后續文章的引子,在此之后,我將通過兩篇文章通過具體實例的形式講述如果在項目將T4為我所用,以達到提高開發效率和保證質量的目的。[這里有T4相關的資料][文中的例子可以從這里下載]。

  一、我們的目標是:從XML文件到C#代碼

  再次重申一下我們需要通過“代碼生成”需要達到的目的。無論對于怎么樣的應用,我們都需要維護一系列的消息。消息的類型很多,比如驗證消息、確認消息、日志消息等。我們一般會將消息儲存在一個文件或者數據庫中進行維護,并提供一些API來獲取相應的消息項。這些API一般都是基于消息的ID來獲取的,換句話說,消息獲取的方式是以一種“弱類型”的編程方式實現的。如果我們能夠根據消息存儲的內容動態地生成相應的C#或者VB.NET代碼,那么我們就能夠以一種強類型的方式來獲取相應的消息項了。

  比如說,現在我們定義了如下一個MessageEntry類型來表示一個消息條目。為了簡單,我們盡量簡化MessageEntry的定義,僅僅保留三個屬性Id、Value和Category。Category表示該消息條目所屬的類型,你可以根據具體的需要對其分類(比如根據模塊名稱或者Severity等)。Value是一個消息真實的內容,可以包含一些占位符({0},{1},…{N})。通過指定占位符對用的值,最中格式化后的文本通過Format返回。

   1: public class MessageEntry
   2: {
   3:     public string Id { get; private set; }
   4:     public string Value { get; private set; }
   5:     public string Category { get; private set; }
   6:  
   7:     public MessageEntry(string id, string value, string category)
   8:     {
   9:         this.Id         = id;
  10:         this.Value      = value;
  11:         this.Category   = category;
  12:     }
  13:     public string Format(params object[] args)
  14:     {
  15:         return string.Format(this.Value, args);
  16:     }
  17: }

NET技術從數據到代碼—基于T4的代碼生成方式,轉載需保留來源!

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

主站蜘蛛池模板: 国产一二三四区在线观看 | 在线黄观看 | 久久精品国产精品亚洲红杏 | 69精品免费视频 | 在线观看一区 | 亚洲一区综合在线播放 | 五月激情网站 | 欧洲成人r片在线观看 | 日本高清不卡二区 | 国产高清免费午夜在线视频 | 日本人videos18videos在线看 | 91福利精品老师国产自产在线 | 亚洲伊人久久大香线蕉结合 | 91香蕉国产亚洲一二三区 | 国产全部理论片线观看 | 手机在线色视频 | 亚洲一区二区中文字5566 | 在线精品国产一区二区 | 国内精品久久久久久久亚洲 | 在线国产高清 | 亚洲一区亚洲二区亚洲三区 | 影音先锋中文一区亚洲 | 免费人成网站在线高清 | 国产自在线 | 美女色哟哟 | 二区中文字幕 | 色六月婷婷 | 一区二区网站 | 久久免费视频2 | 国产三级网页 | 久久久久久久99视频 | 亚洲一区二区三区四区在线 | 国产伦精品一区二区三区女 | 成人免费看黄网站yyy456 | 欧美成人观看 | 色天天色综合 | 成人在线午夜 | 免费色视频在线观看 | 精品四虎免费观看国产高清 | 国产999在线观看 | 亚洲欧美日韩国产一区二区三区精品 |