日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NBear.Mapping使用教程(3):第一个简单例子

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NBear.Mapping使用教程(3):第一个简单例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不斷有朋友希望能提供一些示例,同時我也發現,單純發一些文字性的教程。大家好像都沒有看明白NBear.Mapping是干嘛用的,所以從這篇開始我會陸續以實例的方式介紹NBear.Mapping的使用,以便給大家直觀的印象。這篇我們首先關注的是對象與對象間映射,在這篇文章里你將會看到。即使你的項目不需要與數據庫的映射,NBear.Mapping在日常開發中也會給你帶來非常大的幫助。

就如之前教程介紹的那樣,有一個IUser接口,這個接口定義了用戶的一些基本屬性:

1: public enum UserStatus 2: { 3: Normal, 4: Admin 5: } 6: public interface IUser 7: { 8: int? ID { get;set;} 9: string Name { get;set;} 10: string Address { get;set;} 11: int Age { get;set;} 12: UserStatus Status { get;set;} 13: }

我們用一個類UserObject來實現它,這個類型除了實現IUser接口外,還有一個自定義的屬性Password:

1: public class UserObject : IUser 2: { 3: #region IUser Members 4: private string name; 5: public string Name 6: { 7: get 8: { 9: return name; 10: } 11: set 12: { 13: name = value; 14: } 15: } 16:? 17: private int? id; 18: public int? ID 19: { 20: get 21: { 22: return id; 23: } 24: set 25: { 26: id = value; 27: } 28: } 29: string address; 30: public string Address 31: { 32: get 33: { 34: return address; 35: } 36: set 37: { 38: address = value; 39: } 40: } 41: int age; 42: public int Age 43: { 44: get 45: { 46: return age; 47: } 48: set 49: { 50: age = value; 51: } 52: } 53:? 54: UserStatus status; 55: public UserStatus Status 56: { 57: get 58: { 59: return status; 60: } 61: set 62: { 63: status = value; 64: } 65: } 66:? 67: #endregion 68:? 69: private string password; 70:? 71: public string Password 72: { 73: get { return password; } 74: set { password = value; } 75: } 76:? 77: public UserObject() { } 78:? 79: public UserObject(int? id, string name, string address, int age, UserStatus status, string password) 80: { 81: this.id = id; 82: this.name = name; 83: this.address = address; 84: this.age = age; 85: this.status = status; 86: this.password = password; 87: } 88: }

這時,我們希望將一個UserObject實例的屬性拷貝到另一個UserObject實例中,那么我們可能會使用如下的代碼:

1: UserObject user = new UserObject(1, "abu", "fuzhou", 24, UserStatus.Admin,"*&3345-+¥"); 2: UserObject userObject = new UserObject(); 3: userObject.Address = user.Address; 4: userObject.Age = user.Age; 5: userObject.ID = user.ID; 6: userObject.Name = user.Name; 7: userObject.Password = user.Password; 8: userObject.Status = user.Status;

當然,如果單純的都是這樣的屬性拷貝的話,那完全可以通過實現ICloneable接口,來實現對象的淺拷貝。但是如果我們使用NBear.Mapping的話,那我們的代碼將會變成這樣:

1: UserObject user = new UserObject(1, "abu", "fuzhou", 24, UserStatus.Admin,"*&3345-+¥"); 2: UserObject outputObject = ObjectConvertor.ToObject<UserObject>(user);

你會發現你的對象轉換代碼將會變的非常干凈簡單。此時,在保證系統安全的情況下,我并不希望Password字段參與拷貝工作,那么我們有幾下幾種做法:

1、修改代碼,使用ObjectConvertor.ToObject<InputType,OutputType>(user)的形式,如下:

1: UserObject outputObject = ObjectConvertor.ToObject<IUser,UserObject>(user);

這時,參與對象拷貝的就只有IUser接口里所定義的屬性字段了。

2、不改變原有代碼,在配置文件中增加這樣的一段配置,就可以讓過濾掉Password的拷貝:

1: <object inputType="UserObject" outputType="UserObject"> 2: <views> 3: <view name="Default"> 4: <ignoreProperties> 5: <add destName="Password"></add> 6: </ignoreProperties> 7: </view> 8: </views> 9: </object> 10: <mappings>

以上是兩種最簡單的做法,通過NBear.Mapping,還有其它的調用方法來達到這個目的。

這篇博客比較短,目的是希望能讓大家對NBear.Mapping有直觀的印象。示例代碼下載

阿不

轉載于:https://www.cnblogs.com/hjf1223/archive/2007/12/17/NBear_Mappping_Introduction.html

總結

以上是生活随笔為你收集整理的NBear.Mapping使用教程(3):第一个简单例子的全部內容,希望文章能夠幫你解決所遇到的問題。

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