首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 程式碼產生器擴展(二):以介面屬性為範本生成實體類別

     編輯:關於C語言

VsSingleFileGenerator 限制

主檔修改會重新產生附屬檔,導致無法手動擴充屬性(如加上驗證屬性 [NotNull]、[Length])。若擴充 XML Schema 則複雜度極高且缺乏型別安全。

改用介面作為原始範本

[Table]
interface IUser
{
    [ID]
    [Length("5","16","用戶名長度必須在5-16個字元!")]
    string UserName { get; set; }
    string BirthDate { get; set; }
    string Region { get; set; }
    string Remark { get; set; }
}

產生的實體類別

[Table]
[Serializable]
public class User : Smark.Data.Mappings.DataObject
{
    [ID]
    public string UserName
    {
        get { return mUserName; }
        set { mUserName = value; EntityState.FieldChange("UserName"); }
    }
    private string mUserName;
    public static Smark.Data.FieldInfo userName = new Smark.Data.FieldInfo("User","UserName");
    // ... 其他屬性同理
}

介面屬性直接複製到產生類別,屬性標記保留,享有 IDE 智慧感應與編譯期型別檢查,避免 XML 易錯誤問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved