.NET 4.0 中 Lazy 类得简单使用
.NET 4.0 中 Lazy 类让我的 ORM 小框架又向前迈了一步,下面是我做的一个小Demo,来演示 它的用法:
UserCompany.cs
/// <summary> /// 用户所在的公司 /// </summary> public class UserCompany { public int CompanyId { get; set; } public string CompanyName { get; set; } public string CompanyDescription { get; set; } }
UserCompanyService.cs
public static class UserCompanyService { private static readonly List<UserCompany> ltCompany = new List<UserCompany>() { new UserCompany(){ CompanyId = 1, CompanyName = "中国移动", CompanyDescription = "中国移动的相信介绍在这里" }, new UserCompany(){ CompanyId = 2, CompanyName = "中国联通", CompanyDescription = "中国联通的相信介绍在这里" }, new UserCompany(){ CompanyId = 3, CompanyName = "中国电信", CompanyDescription = "中国电信的相信介绍在这里" }, }; public static List<UserCompany> GetAllCompany() { return ltCompany; } public static UserCompany GetCompanyById(int companyId) { return ltCompany.SingleOrDefault(c => c.CompanyId == companyId); } }
UserInfo.cs
/// <summary> /// 用户信息 /// </summary> public class UserInfo { public UserInfo() { UserCompany_UserCompanyId = new Lazy<UserCompany>(() => UserCompanyService.GetCompanyById(UserCompanyId)); } public int Id { get; set; } public string UserName { get; set; } public DateTime UserBirthday { get; set; } public int UserCompanyId { get; set; } public Lazy<UserCompany> UserCompany_UserCompanyId { get; set; } }
UserInfoService.cs
public class UserInfoService { private static readonly List<UserInfo> ltUserInfo = new List<UserInfo>() { new UserInfo(){ Id = 1, UserName = "张三", UserCompanyId = 1 }, new UserInfo(){ Id = 2, UserName = "李四", UserCompanyId = 2 }, new UserInfo(){ Id = 3, UserName = "王五", UserCompanyId = 1 }, new UserInfo(){ Id = 4, UserName = "赵六", UserCompanyId = 3 } }; public static List<UserInfo> GetAllUserInfo() { return ltUserInfo; } public static UserInfo GetUserInfoById(int userInfoId) { return ltUserInfo.SingleOrDefault(u => u.Id == userInfoId); } }
UserInfoManager.cs
public class UserInfoManager { public static List<UserInfo> GetAllUserInfo() { return UserInfoService.GetAllUserInfo(); } }
Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConAppLazyload { class Program { static void Main(string[] args) { /* 基本 */ Lazy<string> lzTime = new Lazy<string>(Program.GetCurrentTime); Console.WriteLine(lzTime.IsValueCreated); Console.WriteLine(lzTime.Value); Console.WriteLine(lzTime.IsValueCreated); /* 高级 */ List<UserInfo> ltAllUserInfo = UserInfoManager.GetAllUserInfo(); foreach (UserInfo userInfo in ltAllUserInfo) { Console.WriteLine(); Console.WriteLine(userInfo.Id); Console.WriteLine(userInfo.UserName); Console.WriteLine(userInfo.UserBirthday); Console.WriteLine(userInfo.UserCompanyId); Console.WriteLine(userInfo.UserCompany_UserCompanyId.IsValueCreated); Console.WriteLine(userInfo.UserCompany_UserCompanyId.Value.CompanyName); Console.WriteLine(userInfo.UserCompany_UserCompanyId.IsValueCreated); Console.WriteLine(); } } static string GetCurrentTime() { return DateTime.Now.ToString("yyyy-MM-dd"); } } }
附件下载:http://files.cnblogs.com/Music/CSharp4Lazy.rar
谢谢浏览!
优质内容筛选与推荐>>