看到這標題的朋友可能搞不懂到底在搞什麼,不過不要緊有興趣的朋友可以先了解一下 IVsSingleFileGenerator到底是用來做什麼用的《實現自定義的VsSingleFileGenerator 》;在vs.Net裡 提供一個IVsSingleFileGenerator接口可以方便地為項目文件生成附屬文件,如剛才那文章提到的根據XML 文件自動生成一個附屬的C#代碼文件;當然這個IVsSingleFileGenerator並不只是針對XML文件,可以是隨 便為任何項目文件生成附屬文件你只要在文件屬性中設置相關Custom Tools就可以了.
為什麼在這裡我提出在代碼文件的基礎上再生相關的代碼附屬文件呢,為什麼不直接在原代碼文件寫完 整就可以了;原因很簡單因為手寫代碼是沒有電腦來得快,最主要一個原因是基於XML的 IVsSingleFileGenerator在某方面不好所以才采用基於代碼文件的方式作為代碼描述模板.用XML描述在現 情況碰到的問題,在我的數據持久層裡是采用XML結合IVsSingleFileGenerator來生成相關實體類的.
內容大概如下:
<SmarkDatamodels XMLns="http://SmarkData.cn/model.xsd" >
<Class Name="Customer" Table="vp_Customer">
< ID Name="CustomerID" Type="System.Int64"/>
< Property Name="UserName" Type="System.String" Comment="用戶名"/>
<Property Name="UserPWD" Type="System.String" Comment="用戶密碼"/>
<Property Name="CustomerType" Type="System.Int32" Comment="客戶類型"/>
<Property Name="CustomerName" Type="System.String" Comment="自定義名"/>
<Property Name="Sex" Type="System.Boolean" Comment="性別"/>
<Property Name="Region" Type="System.String" Comment="地區"/>
<Property Name="City" Type="System.String" Comment="城市"/>
<Property Name="IDCard" Type="System.String" Comment="身份證號"/>
<Property Name="EMail" Type="System.String" Comment="電子郵件"/>
<Property Name="Phone" Type="System.String" Comment="電話"/>
< /Class>
< /SmarkDatamodels>
VsSingleFileGenerator會根據XML生成以下相關實體:
/// <summary>
/// 用戶名
/// </summary>
public virtual string UserName {
get {
return this.mUserName;
}
set {
this.mUserName = value;
this.EntityState.FIEldChange("UserName");
}
}
/// <summary>
/// 用戶密碼
/// </summary>
public virtual string UserPWD {
get {
return this.mUserPWD;
}
set {
this.mUserPWD = value;
this.EntityState.FIEldChange("UserPWD");
}
}
/// <summary>
/// 客戶類型
/// </summary>
public virtual int CustomerType {
get {
return this.mCustomerType;
}
set {
this.mCustomerType = value;
this.EntityState.FIEldChange("CustomerType");
}
}