泛型對象實例化


繼承new()這個就可以進行泛型實例化了。本來還想着直接傳一個進去(ActivityPlayRequest request,T model, ActivityDbContext dbContext)

但是由於list引用的是地址指針,所以到最后List中的所有數據都是model最后一次的改變結果,比較坑。

所以查了一下泛型實例化的寫法。當然這種寫法要求該對象存在無參的構造函數才行。

是從這里參考的:Author ※森林小居※

http://www.cnblogs.com/Slxj/archive/2011/10/13/2210443.html

 

復制代碼
public List<T> GetAbstractUserDTO<T>(ActivityPlayRequest request,ActivityDbContext dbContext) where T : AbstractUserDTO,new()
        {
            //temp用來存放一個值,因為T泛型不能創建
                var merchant = dbContext.Find<Merchant>(request.MerchantID);
                if (merchant == null)
                {
                    return null;
                }
                var result = new List<T>();
                
                var weixinUserList = dbContext.WeixinUsers.ToList();
                var merchantWeixinUserList = dbContext.MerchantWeixinUsers.ToList();
                if (!string.IsNullOrEmpty(request.Keyword))
                {
                    request.Keyword = request.Keyword.Trim();
                }
                //參加用戶的唯一表
                #region 存儲值
                var playList = dbContext.ActivityScenePlayRecords.Where(u => u.ActivitySceneID == request.ActivitySceneID).ToList();
                foreach (var item in playList)
                {
                    var temp = new T();
                    temp.MerchantWeixinUserID = item.MerchantWeixinUserID;
                    temp.WeixinUserID = item.WeixinUserID;
                    #region 真實姓名聯系方式,不通過weixinuser表了,而是使用ActivityScenePlayRecord表進行獲取
                    temp.RealName = item.RealName;
                    temp.TelPhone = item.Telphone;
                    #endregion
                        var merchantWeixinUser = merchantWeixinUserList.Where(u => u.ID == item.MerchantWeixinUserID).FirstOrDefault();
                        temp.NickName = merchantWeixinUser.NickName;
                        temp.OpenId = merchantWeixinUser.OpenId;
                        temp.ImageUrl = merchantWeixinUser.HeadImageUrl;
                  
                    #region 根據keyword判斷是否要添加進入
                    if (!string.IsNullOrEmpty(request.Keyword))
                    {
                        if (!string.IsNullOrEmpty(temp.RealName) && temp.RealName.Contains(request.Keyword))
                        {
                            result.Add(temp);
                        }
                        else if (!string.IsNullOrEmpty(temp.TelPhone) && temp.TelPhone.Contains(request.Keyword))
                        {
                            result.Add(temp);
                        }
                        else if (!string.IsNullOrEmpty(temp.NickName) && temp.NickName.Contains(request.Keyword))
                        {
                            result.Add(temp);
                        }
                    }
                    else
                    {
                        result.Add(temp);
                    }
                    #endregion
                }
                #endregion
                return result;
        }
復制代碼
https://www.cnblogs.com/danlis/p/5359372.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM