zoukankan      html  css  js  c++  java
  • 泛型对象实例化

    继承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;
            }
  • 相关阅读:
    739. Daily Temperatures
    556. Next Greater Element III
    1078. Occurrences After Bigram
    1053. Previous Permutation With One Swap
    565. Array Nesting
    1052. Grumpy Bookstore Owner
    1051. Height Checker
    数据库入门及SQL基本语法
    ISCSI的概念
    配置一个IP SAN 存储服务器
  • 原文地址:https://www.cnblogs.com/danlis/p/5359372.html
Copyright © 2011-2022 走看看