コード例 #1
0
ファイル: MemberService.cs プロジェクト: Ejendomsdrift/edrift
        public ICurrentUserContextModel GetCurrentUserContext()
        {
            var managementDepartments = new List <IManagementDepartmentModel>();

            IMemberModel currentUser = GetCurrentUser();

            if (currentUser.CurrentRole == RoleType.Coordinator)
            {
                IEnumerable <Guid> ids = currentUser.ManagementsToActiveRolesRelation[currentUser.CurrentRole];
                managementDepartments = managementDepartmentService.GetManagementDepartmentsByIds(ids).ToList();
            }
            else
            {
                Member member = memberRepository.Query.First(x => x.Id == currentUser.MemberId);

                IEnumerable <string> managementDepartmentSyncIds = member.RoleList
                                                                   .Where(x => !x.IsDeleted && x.RoleId == (int)currentUser.CurrentRole)
                                                                   .Select(x => x.ManagementDepartmentId);

                managementDepartments = managementDepartmentService.GetManagementDepartmentsBySyncIds(managementDepartmentSyncIds).ToList();
            }

            return(new CurrentUserContextModel
            {
                MemberModel = currentUser,
                ManagementDepartments = managementDepartments,
                SelectedManagementDepartment = GetSelectedManagementDepartment(currentUser.ActiveManagementDepartmentId, managementDepartments)
            });
        }
コード例 #2
0
        public async Task <HttpResponseMessage> UploadFileWhenChangeJobStatus()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType));
            }

            var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);

            var contents    = provider.Contents;
            var fileContent = contents.FirstOrDefault(x => x.Headers.ContentDisposition.FileName.IsNotNullOrEmpty());

            if (fileContent == null)
            {
                return(new HttpResponseMessage(HttpStatusCode.NoContent));
            }

            var fileId = Guid.NewGuid();
            var buffer = await fileContent.ReadAsByteArrayAsync();

            var originalName     = fileContent.Headers.ContentDisposition.FileName.Trim('"');
            var absolutePathPart = HostingEnvironment.MapPath(Constants.Upload.DayAssignUploadPath);

            var dayAssignId = (await GetParameter(contents, "dayAssignId")).ToGuid();

            IMemberModel currentUser = memberService.GetCurrentUser();
            await messageBus.Publish(new DayAssignUploadFileCommand(fileId, buffer, originalName, absolutePathPart, dayAssignId, currentUser.MemberId));

            return(Request.CreateResponse(HttpStatusCode.OK, new { fileId }));
        }
コード例 #3
0
ファイル: MemberService.cs プロジェクト: Ejendomsdrift/edrift
        public void UpdateMember(int daysAhead, Guid?departmentId)
        {
            IMemberModel currentUser = GetCurrentUser();

            if (currentUser == null)
            {
                return;
            }

            Member member = memberRepository.Query.First(m => m.Id == currentUser.MemberId);

            UnsetOldActiveRole(member, currentUser.CurrentRole);

            if (departmentId.HasValue)
            {
                IManagementDepartmentModel managementDepartmentModel = managementDepartmentService.GetManagementDepartmentById(departmentId.Value);
                Role role = member.RoleList.First(x => x.RoleId == (int)currentUser.CurrentRole && x.ManagementDepartmentId == managementDepartmentModel.SyncDepartmentId);
                role.IsActive = true;
            }
            else
            {
                Role role = member.RoleList.First(x => x.RoleId == (int)member.CurrentRole);
                role.IsActive = true;
            }

            member.DaysAhead = daysAhead;
            memberRepository.Save(member);
        }
コード例 #4
0
ファイル: MemberService.cs プロジェクト: Ejendomsdrift/edrift
        public IMemberModel GetByEmail(string email)
        {
            Member       user   = memberRepository.Query.FirstOrDefault(i => i.Email == email.ToLowerInvariant());
            IMemberModel result = MapMember(user, mapCoordinatorProperties: true);

            return(result);
        }
コード例 #5
0
ファイル: MemberService.cs プロジェクト: Ejendomsdrift/edrift
        public IMemberModel GetByUserName(string userName)
        {
            Member       user   = memberRepository.Query.FirstOrDefault(i => i.UserName == userName);
            IMemberModel result = MapMember(user, mapCoordinatorProperties: true);

            return(result);
        }
コード例 #6
0
        private static Expression CustomResolverFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var config = arg.Settings;
            var resolvers = config.Resolvers;
            if (resolvers == null || resolvers.Count <= 0)
                return null;

            Expression getter = null;
            LambdaExpression lastCondition = null;
            for (int j = 0; j < resolvers.Count; j++)
            {
                var resolver = resolvers[j];
                if (destinationMember.Name.Equals(resolver.MemberName))
                {
                    Expression invoke = resolver.Invoker.Apply(source);
                    getter = lastCondition != null
                        ? Expression.Condition(lastCondition.Apply(source), getter, invoke)
                        : invoke;
                    lastCondition = resolver.Condition;
                    if (resolver.Condition == null)
                        break;
                }
            }
            if (lastCondition != null)
                getter = Expression.Condition(lastCondition.Apply(source), getter, Expression.Constant(getter.Type.GetDefault(), getter.Type));
            return getter;
        }
コード例 #7
0
        public async Task <FormattedJobAssignViewModel> GetJobAssigns(string jobId, UploadedContentEnum?contentType)
        {
            IMemberModel currentUser = memberService.GetCurrentUser();
            IJob         job         = await jobService.GetJobById(jobId);

            var result = new FormattedJobAssignViewModel();

            if (job.RelationGroupList.Any() && job.ParentId != null)
            {
                Guid housingDepartmentId = job.RelationGroupList.First().HousingDepartmentId;
                IEnumerable <Guid> relationGroupIdList    = job.RelationGroupList.Select(x => x.RelationGroupId).ToList();
                JobAssign          globalGroupedJobAssign = jobService.GetGlobalJobAssignForGroupedTask(job);
                List <JobAssign>   jobAssigns             = jobService.GetJobAssignList(relationGroupIdList);
                result.GlobalAssign = globalGroupedJobAssign.Map <JobAssignViewModel>();
                result.Assigns      = jobAssigns.Where(i => !i.IsGlobal && i.HousingDepartmentIdList.Contains(housingDepartmentId)).Select(i => i.Map <JobAssignViewModel>()).ToList();
                result.AddressList  = jobService.GetRelatedAddressListForHousingDepartment(relationGroupIdList, housingDepartmentId, isParent: false);
                result.IsGroupedJob = true;
                result.IsChildJob   = job.ParentId != null;
            }
            else
            {
                IFormattedJobAssign jobAssign = jobService.GetAllByJobIdFormatted(jobId, currentUser.IsAdmin() ? null : currentUser.ActiveManagementDepartmentId);
                result = Mapper.Map <FormattedJobAssignViewModel>(jobAssign);
            }

            result.CurrentUser             = currentUser;
            result.GlobalAssign.UploadList = GetUploadListModel(result.GlobalAssign.UploadList, contentType);

            foreach (var assign in result.Assigns)
            {
                assign.UploadList = GetUploadListModel(assign.UploadList, contentType);
            }

            return(result);
        }
コード例 #8
0
        private static Expression FlattenMemberFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var strategy = arg.Settings.NameMatchingStrategy;
            var destinationMemberName = strategy.DestinationMemberNameConverter(destinationMember.Name);

            return(ReflectionUtils.GetDeepFlattening(source, destinationMemberName, arg));
        }
コード例 #9
0
        private static Expression?FlattenMemberFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var strategy = arg.Settings.NameMatchingStrategy;
            var destinationMemberName = destinationMember.GetMemberName(MemberSide.Destination, arg.Settings.GetMemberNames, strategy.DestinationMemberNameConverter);

            return(GetDeepFlattening(source, destinationMemberName, arg));
        }
コード例 #10
0
        private static IEnumerable <string> GetDeepUnflattening(IMemberModel destinationMember, string propertyName, CompileArgument arg)
        {
            var strategy = arg.Settings.NameMatchingStrategy;
            var members  = destinationMember.Type.GetFieldsAndProperties(true);

            foreach (var member in members)
            {
                if (!member.ShouldMapMember(arg, MemberSide.Destination))
                {
                    continue;
                }
                var destMemberName = member.GetMemberName(MemberSide.Destination, arg.Settings.GetMemberNames, strategy.DestinationMemberNameConverter);
                var propertyType   = member.Type;
                if (string.Equals(propertyName, destMemberName))
                {
                    yield return(member.Name);
                }
                else if (propertyName.StartsWith(destMemberName) &&
                         (propertyType.IsPoco() || propertyType.IsRecordType()))
                {
                    foreach (var prop in GetDeepUnflattening(member, propertyName.Substring(destMemberName.Length).TrimStart('_'), arg))
                    {
                        yield return(member.Name + "." + prop);
                    }
                }
            }
        }
コード例 #11
0
        public IChangeStatusInfo GetJobStatusInfo(IJobStatusLogModel jobStatusLog, IDayAssign dayAssign)
        {
            ChangeStatusInfo resultModel = null;

            if (IsValidLog(jobStatusLog, dayAssign))
            {
                resultModel = new ChangeStatusInfo
                {
                    ChangeStatusComment = jobStatusLog.Comment,
                    CancellationReason  = jobStatusLog.CancelingReason,
                    ChangeStatusDate    = jobStatusLog.Date,
                    UploadedFileList    = GetUploadedFileList(dayAssign)
                };

                IMemberModel member = memberService.GetById(jobStatusLog.MemberId);

                if (member != null)
                {
                    resultModel.Avatar = member.Avatar;
                    resultModel.Name   = member.Name;
                }
            }

            return(resultModel);
        }
コード例 #12
0
ファイル: MemberService.cs プロジェクト: Ejendomsdrift/edrift
        public IMemberModel GetCurrentUser()
        {
            string       userName = authenticationService.GetCurrentUserName();
            IMemberModel result   = GetByUserName(userName);

            return(result);
        }
コード例 #13
0
ファイル: BaseClassAdapter.cs プロジェクト: centur/Mapster
 private static bool ProcessIgnores(TypeAdapterSettings config, IMemberModel destinationMember)
 {
     if (config.IgnoreMembers.Contains(destinationMember.Name))
         return true;
     var attributes = destinationMember.GetCustomAttributes(true).Select(attr => attr.GetType());
     return config.IgnoreAttributes.Overlaps(attributes);
 }
コード例 #14
0
        private static Expression DictionaryFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var dictType = source.Type.GetDictionaryType();

            if (dictType == null)
            {
                return(null);
            }

            var strategy = arg.Settings.NameMatchingStrategy;
            var destinationMemberName = destinationMember.GetMemberName(arg.Settings.GetMemberNames, strategy.DestinationMemberNameConverter);
            var key  = Expression.Constant(destinationMemberName);
            var args = dictType.GetGenericArguments();

            if (strategy.SourceMemberNameConverter != NameMatchingStrategy.Identity)
            {
                var method = typeof(CoreExtensions).GetMethods().First(m => m.Name == nameof(CoreExtensions.FlexibleGet)).MakeGenericMethod(args[1]);
                return(Expression.Call(method, source.To(dictType), key, Expression.Constant(strategy.SourceMemberNameConverter)));
            }
            else
            {
                var method = typeof(CoreExtensions).GetMethods().First(m => m.Name == nameof(CoreExtensions.GetValueOrDefault)).MakeGenericMethod(args);
                return(Expression.Call(method, source.To(dictType), key));
            }
        }
コード例 #15
0
ファイル: MemberService.cs プロジェクト: Ejendomsdrift/edrift
        public IMemberModel GetById(Guid id, bool mapCoordinatorProperties = false)
        {
            Member       user   = memberRepository.Query.FirstOrDefault(i => i.Id == id);
            IMemberModel result = MapMember(user, mapCoordinatorProperties);

            return(result);
        }
コード例 #16
0
 public Form2(List <ICheckoutModel> checkoutHistory, IMemberModel member, IDataConnection dataConnection)
 {
     //_dataConnection = dataConnection;
     //_checkoutHistory = checkoutHistory;
     //_member = member;
     //InitializeComponent();
 }
コード例 #17
0
        private List <Job> GetJobs(IEnumerable <Guid> categoryIds, IMemberModel user)
        {
            List <Job> jobs = user.IsAdmin()
                    ? jobProvider.Get(categoryIds)
                    : jobProvider.GetByCategoryIdsForCoordinator(categoryIds, user);

            return(jobs);
        }
コード例 #18
0
        public static string GetMemberName(this IMemberModel member, MemberSide side, List <Func <IMemberModel, MemberSide, string?> > getMemberNames, Func <string, string> nameConverter)
        {
            var memberName = getMemberNames.Select(func => func(member, side))
                             .FirstOrDefault(name => name != null)
                             ?? member.Name;

            return(nameConverter(memberName));
        }
コード例 #19
0
ファイル: ReflectionUtils.cs プロジェクト: pronchaia/Mapster
        public static string GetMemberName(this IMemberModel member, List <Func <IMemberModel, string?> > getMemberNames, Func <string, string> nameConverter)
        {
            var memberName = getMemberNames.Select(predicate => predicate(member))
                             .FirstOrDefault(name => name != null)
                             ?? member.Name;

            return(nameConverter(memberName));
        }
コード例 #20
0
        private IEnumerable <Guid> GetEmployeeIdListForCurrentUser()
        {
            IMemberModel currentUser = memberService.GetCurrentUser();

            return(currentUser.IsAdmin()
                ? memberService.GetAll().Select(x => x.MemberId)
                : memberService.GetEmployeesByManagementDepartment(currentUser.ActiveManagementDepartmentId.Value).Select(x => x.MemberId));
        }
コード例 #21
0
 private static Expression PropertyOrFieldFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
 {
     var members = source.Type.GetPublicFieldsAndProperties();
     var strategy = arg.Settings.NameMatchingStrategy;
     var destinationMemberName = strategy.DestinationMemberNameConverter(destinationMember.Name);
     return members.Where(member => strategy.SourceMemberNameConverter(member.Name) == destinationMemberName)
         .Select(member => member.GetExpression(source))
         .FirstOrDefault();
 }
コード例 #22
0
 private void searchMemberBtn_Click(object sender, EventArgs e)
 {
     member          = GlobalConfig.CreateMemberModel();
     member.MemberID = Convert.ToInt32(searchMemberTxt.Text);
     MemberID        = member.MemberID;
     GetMember(MemberID);
     WireupSelectedMemberDetail();
     WireupCurrentCheckoutCB(member.MemberID);
 }
コード例 #23
0
        private IEnumerable <IMemberModel> GetMembers(IMemberModel member)
        {
            if (member.IsAdmin())
            {
                return(memberService.GetAll());
            }

            return(memberService.GetAllowedMembersForJobByDepartmentId(member.ActiveManagementDepartmentId.Value));
        }
コード例 #24
0
        private IEnumerable <IGroupModel> GetGroups(IMemberModel member)
        {
            if (member.IsAdmin())
            {
                return(groupService.GetAll());
            }

            return(groupService.GetByManagementId(member.ActiveManagementDepartmentId.Value));
        }
コード例 #25
0
ファイル: MemberTreeNode.cs プロジェクト: Paccc/SharpDevelop
		public MemberTreeNode(IMemberModel model)
		{
			if (model == null)
				throw new ArgumentNullException("model");
			this.model = model;
			// disable lazy loading to avoid showing a useless + sign in the tree.
			// remove this line if you add child nodes
			LazyLoading = false;
		}
コード例 #26
0
        private static Expression PropertyOrFieldFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var members  = source.Type.GetPublicFieldsAndProperties();
            var strategy = arg.Settings.NameMatchingStrategy;
            var destinationMemberName = strategy.DestinationMemberNameConverter(destinationMember.Name);

            return(members.Where(member => strategy.SourceMemberNameConverter(member.Name) == destinationMemberName)
                   .Select(member => member.GetExpression(source))
                   .FirstOrDefault());
        }
コード例 #27
0
 private static Expression GetMethodFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
 {
     if (arg.MapType == MapType.Projection)
         return null;
     var strategy = arg.Settings.NameMatchingStrategy;
     var destinationMemberName = "Get" + strategy.DestinationMemberNameConverter(destinationMember.Name);
     var getMethod = source.Type.GetMethods(BindingFlags.Public | BindingFlags.Instance)
         .FirstOrDefault(m => strategy.SourceMemberNameConverter(m.Name) == destinationMemberName);
     return getMethod != null ? Expression.Call(source, getMethod) : null;
 }
コード例 #28
0
        private MemberViewModel GetUploaderModel(Guid uploaderId)
        {
            IMemberModel member = memberService.GetById(uploaderId);

            return(new MemberViewModel
            {
                Avatar = member.Avatar,
                Name = member.Name
            });
        }
コード例 #29
0
ファイル: BaseClassAdapter.cs プロジェクト: tomstreet/Mapster
        private static bool ProcessIgnores(TypeAdapterSettings config, IMemberModel destinationMember)
        {
            if (config.IgnoreMembers.Contains(destinationMember.Name))
            {
                return(true);
            }
            var attributes = destinationMember.GetCustomAttributes(true).Select(attr => attr.GetType());

            return(config.IgnoreAttributes.Overlaps(attributes));
        }
コード例 #30
0
        public IEnumerable <IMemberModel> GetMembers()
        {
            IMemberModel currentUser = memberService.GetCurrentUser();

            if (currentUser.ActiveManagementDepartmentId.HasValue)
            {
                return(memberService.GetEmployeesByManagementDepartment(currentUser.ActiveManagementDepartmentId.Value));
            }
            return(memberService.GetEmployees());
        }
コード例 #31
0
        private static Expression?CustomResolverFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var config    = arg.Settings;
            var resolvers = config.Resolvers;

            if (resolvers == null || resolvers.Count <= 0)
            {
                return(null);
            }

            var invokes = new List <Tuple <Expression, Expression> >();

            Expression?getter = null;

            foreach (var resolver in resolvers)
            {
                if (!destinationMember.Name.Equals(resolver.DestinationMemberName))
                {
                    continue;
                }
                var invoke = resolver.Invoker == null
                    ? ExpressionEx.PropertyOrField(source, resolver.SourceMemberName)
                    : resolver.IsChildPath
                    ? resolver.Invoker.Body
                    : resolver.Invoker.Apply(arg.MapType, source);

                if (resolver.Condition == null)
                {
                    getter = invoke;
                    break;
                }

                var condition = resolver.IsChildPath
                    ? resolver.Condition.Body
                    : resolver.Condition.Apply(arg.MapType, source);
                invokes.Add(Tuple.Create(condition, invoke));
            }

            if (invokes.Count > 0)
            {
                invokes.Reverse();
                if (getter == null)
                {
                    var type = invokes[0].Item2.Type;
                    getter = type.CreateDefault();
                }
                foreach (var invoke in invokes)
                {
                    getter = Expression.Condition(invoke.Item1, invoke.Item2, getter);
                }
            }

            return(getter);
        }
コード例 #32
0
        public IEnumerable <IMemberModel> GetAllowedMembersForJob()
        {
            IMemberModel currentUser = memberService.GetCurrentUser();

            if (currentUser.ActiveManagementDepartmentId.HasValue)
            {
                return(memberService.GetAllowedMembersForJobByDepartmentId(currentUser.ActiveManagementDepartmentId.Value));
            }

            return(memberService.GetAllowedMembersForJob());
        }
コード例 #33
0
        private static Expression?PropertyOrFieldFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var members  = source.Type.GetFieldsAndProperties(accessorFlags: BindingFlags.NonPublic | BindingFlags.Public);
            var strategy = arg.Settings.NameMatchingStrategy;
            var destinationMemberName = destinationMember.GetMemberName(arg.Settings.GetMemberNames, strategy.DestinationMemberNameConverter);

            return(members
                   .Where(member => member.ShouldMapMember(arg, MemberSide.Source))
                   .Where(member => member.GetMemberName(arg.Settings.GetMemberNames, strategy.SourceMemberNameConverter) == destinationMemberName)
                   .Select(member => member.GetExpression(source))
                   .FirstOrDefault());
        }
コード例 #34
0
ファイル: BaseClassAdapter.cs プロジェクト: tomstreet/Mapster
        private static bool ProcessCustomResolvers(
            Expression source,
            Expression destination,
            TypeAdapterSettings config,
            IMemberModel destinationMember,
            List <MemberConverter> properties)
        {
            bool isAdded   = false;
            var  resolvers = config.Resolvers;

            if (resolvers != null && resolvers.Count > 0)
            {
                MemberConverter  memberConverter = null;
                LambdaExpression lastCondition   = null;
                for (int j = 0; j < resolvers.Count; j++)
                {
                    var resolver = resolvers[j];
                    if (destinationMember.Name.Equals(resolver.MemberName))
                    {
                        if (memberConverter == null)
                        {
                            memberConverter = new MemberConverter
                            {
                                ConvertType = 5,
                                Setter      = destinationMember.GetExpression(destination),
                                SetterInfo  = destinationMember.Info,
                            };
                            isAdded = true;
                        }

                        Expression invoke = resolver.Invoker.Apply(source);
                        memberConverter.Getter = lastCondition != null
                            ? Expression.Condition(lastCondition.Apply(source), memberConverter.Getter, invoke)
                            : invoke;

                        lastCondition = resolver.Condition;
                        if (resolver.Condition == null)
                        {
                            break;
                        }
                    }
                }
                if (memberConverter != null)
                {
                    if (lastCondition != null)
                    {
                        memberConverter.Getter = Expression.Condition(lastCondition.Apply(source), memberConverter.Getter, Expression.Constant(memberConverter.Getter.Type.GetDefault(), memberConverter.Getter.Type));
                    }
                    properties.Add(memberConverter);
                }
            }
            return(isAdded);
        }
コード例 #35
0
        public IEnumerable <HousingDepartmentViewModel> GetHousingDepartments()
        {
            IMemberModel currentMember = memberService.GetCurrentUser();

            IEnumerable <IHousingDepartmentModel> housingDepartments = currentMember.IsAdmin()
                ? managementDepartmentService.GetAllHousingDepartments()
                : managementDepartmentService.GetHousingDepartments(currentMember.ActiveManagementDepartmentId.Value);

            var housingDepartmentsView = housingDepartments.Map <IEnumerable <HousingDepartmentViewModel> >();

            return(housingDepartmentsView.OrderBy(x => x.Name));
        }
コード例 #36
0
ファイル: CodeElement.cs プロジェクト: Paccc/SharpDevelop
		public static CodeElement CreateMember(CodeModelContext context, IMemberModel m)
		{
			switch (m.SymbolKind) {
				case SymbolKind.Field:
					return new CodeVariable(context, (IFieldModel)m);
				case SymbolKind.Property:
				case SymbolKind.Indexer:
//					return new CodeProperty2(m);
					throw new NotImplementedException();
				case SymbolKind.Event:
					return null; // events are not supported in EnvDTE?
				case SymbolKind.Method:
				case SymbolKind.Operator:
				case SymbolKind.Constructor:
				case SymbolKind.Destructor:
					return new CodeFunction2(context, (IMethodModel)m);
				default:
					throw new NotSupportedException("Invalid value for SymbolKind");
			}
		}
コード例 #37
0
        private static Expression DictionaryFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
        {
            var dictType = source.Type.GetDictionaryType();
            if (dictType == null)
                return null;

            var strategy = arg.Settings.NameMatchingStrategy;
            var destinationMemberName = strategy.DestinationMemberNameConverter(destinationMember.Name);
            var key = Expression.Constant(destinationMemberName);
            var args = dictType.GetGenericArguments();
            if (strategy.SourceMemberNameConverter != NameMatchingStrategy.Identity)
            {
                var method = typeof (Extensions).GetMethods().First(m => m.Name == "FlexibleGet").MakeGenericMethod(args[1]);
                return Expression.Call(method, source.To(dictType), key, Expression.Constant(strategy.SourceMemberNameConverter));
            }
            else
            {
                var method = typeof(Extensions).GetMethods().First(m => m.Name == "GetValueOrDefault").MakeGenericMethod(args);
                return Expression.Call(method, source.To(dictType), key);
            }
        }
コード例 #38
0
 private static Expression FlattenMemberFn(Expression source, IMemberModel destinationMember, CompileArgument arg)
 {
     var strategy = arg.Settings.NameMatchingStrategy;
     var destinationMemberName = strategy.DestinationMemberNameConverter(destinationMember.Name);
     return ReflectionUtils.GetDeepFlattening(source, destinationMemberName, arg);
 }