日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

UI与实体的映射

發布時間:2025/4/5 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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);
}

這個小組件功能非常簡單也很有限,僅供一些參考。Demo如附件。/Files/baihmpgy/CZB.ObjectMapper.Test.rar 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的UI与实体的映射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。