UI與實體的對映
分享一個2006年的小元件。那會在.NET,比較流行的ORM就是NHiberate和IBatis.NET了。在用到這些ORM框架時,經常需要將介面的輸入經過處理後轉換成實體,最終透過ORM框架對映到資料庫。不知道大家使用最簡單的賦值還是使用類似UIMapper的元件。我的方法是自己設計了一個O-O Map的元件,將一個Object的值透過宣告的特性轉換到另一個Object,同時也支援反向對映。由於窗體也就是一個Object,該元件可以滿足普通OO對映之外,還可以滿足WinForm和WebForm對映。該元件示例如下:
(1)一個UI表單
(2)相應的實體類,加上了對映特性
public class UserEntity
{
……
[Member] //表示實體類與窗體類成員Age的值想對應。
public int Age;
[Control] //表示實體類與窗體類控制元件成員Name的值對映。
public string Name
{
get { return _name; }
set { _name = value; }
}
[Control("CardNo.Text")] //表示實體類與窗體類控制元件成員的Text屬性相對映,注意,可以指定Path格式。
public string CardNo
{
get { return _cardNo; }
set { _cardNo = value; }
}
……
}
public class EmployeeEntity
{
……
[Reference(typeof(UserEntity))] //引用了UserEntity的對映。
public UserEntity User
{
get { return _user; }
set { _user = value; }
}
[Control] //控制元件
public float PostSalary
{
get { return _postSalary; }
set { _postSalary = value; }
}
……
}
(3)在窗體類中呼叫ObjectEngine實現OO對映。窗體就是一個繼承Form的類,因此,O-O Mapper即可以支援普通對映,也可以支援UI to Entity對映。
1)實現表單類與實體類對映
private void Map_Click(object sender, System.EventArgs e)
{
this.o = CZB.ObjectMapper.ObjectEngine.
Map(this,typeof(EmployeeEntity)) as EmployeeEntity;
}
2)實現實體類與表單類的對映
private void InverseMap_Click(object sender, System.EventArgs e)
{
this.o.User.Name = "c.z.b in";
this.o.User.Age = 19;
this.o.CompoInsurance = 0;
CZB.ObjectMapper.ObjectEngine.InverseMap(this,o);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2318/viewspace-2799970/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MapStruct實體對映Struct
- Mybatis實體關聯對映MyBatis
- Java實體對映工具MapStruct 與BeanUtils效能比較JavaStructBean
- Hibernate中實體類對映檔案表與表的關係模版
- Java實體對映工具MapStruct詳解JavaStruct
- Java實體對映工具MapStruct使用詳解JavaStruct
- Mac 鍵盤與滑鼠的對映Mac
- HDR與色調對映
- Spring Boot 入門系列(二十八) JPA 的實體對映關係,一對一,一對多,多對多關係對映!Spring Boot
- Cache與主存之間的直接對映,全相聯對映和組項聯對映以及其地址變換
- 07_Linux實體地址到虛擬地址對映Linux
- mybatis 實體類排除資料庫欄位對映MyBatis資料庫
- SpringBoot JPA查詢對映到自定義實體類Spring Boot
- 關於 SAP UI5 應用 ui5.yaml 裡的 paths 對映問題UIYAML
- JPA實體中欄位對映補充和嵌入物件物件
- ASP.NET Core擴充套件庫之實體對映ASP.NET套件
- Fluent API 配置實體和資料庫之間的對映關係API資料庫
- 有哪些簡單實用的埠對映(內網穿透)軟體工具?內網穿透
- 對映
- MyBatis實現一對一關聯對映MyBatis
- Python mmap的使用-檔案記憶體對映Python記憶體
- ElasticSearch中的對映Elasticsearch
- [鮮花] 事實刻畫對映.
- 使用記憶體對映檔案(mmap)記憶體
- 共享記憶體對映(linux程式與執行緒學習筆記)記憶體Linux執行緒筆記
- 多重對映
- python實現兩字串對映詳解Python字串
- PHP 使用連結串列實現對映PHP
- Linux 或 Windows 上實現埠對映LinuxWindows
- MyBatis(四) 對映器配置(自動對映、resultMap手動對映、引數傳遞)MyBatis
- 從記憶體對映mmap說開去記憶體
- linux記憶體管理(八)- 反向對映RMAPLinux記憶體
- 埠對映(一鍵免費)- 軟體篇
- Nginx配置靜態代理/靜態資源對映時root與alias的區別,帶字首對映用aliasNginx
- 在 ASP.NET Core 專案中使用 AutoMapper 進行實體對映ASP.NETAPP
- 基於AbstractProcessor擴充套件MapStruct自動生成實體對映工具類套件Struct
- Verilog程式碼和FPGA硬體的對映關係(五)FPGA
- Verilog程式碼和FPGA硬體的對映關係(四)FPGA