public MappingContext(PropertyOrFieldInfo source, PropertyOrFieldInfo dest, int depth, IMemberMapper mapper) { Source = source; Destination = dest; Depth = depth; Mapper = mapper; }
public bool IsMemberIgnored(Type sourceType, PropertyOrFieldInfo destinationProperty) { if (mapper.Options.Conventions.IgnoreMemberAttributeShouldBeRespected) { var ignoreAttribute = destinationProperty.GetCustomAttributes(typeof(IgnoreMemberAttribute), false).SingleOrDefault() as IgnoreMemberAttribute; if (ignoreAttribute != null) { var ignore = true; if (!string.IsNullOrEmpty(ignoreAttribute.Profile)) { ignore &= ignoreAttribute.Profile == mapper.Profile; } if (ignoreAttribute.WhenSourceTypeIs != null) { ignore &= ignoreAttribute.WhenSourceTypeIs == sourceType; } if (ignore) return true; } } return false; }
public PropertyOrFieldInfo GetMatchingSourceMember(PropertyOrFieldInfo destinationProperty) { PropertyOrFieldInfo sourceProperty; SourceMembers.TryGetValue(destinationProperty.Name, out sourceProperty); return sourceProperty; }
public LambdaExpression GetConversionFunction(PropertyOrFieldInfo source, PropertyOrFieldInfo destination) { LambdaExpression conversion; this.conversionFunctions.TryGetValue(new ConversionFunctionKey(source, destination), out conversion); return(conversion); }
internal static LambdaExpression Bind(Type sourceType, PropertyOrFieldInfo member, LambdaExpression conversion, LambdaExpression customMapping = null) { var parameterToReplace = conversion.Parameters.Single(); var newParameter = Expression.Parameter(sourceType, "p"); var accessMember = Expression.MakeMemberAccess(newParameter, member); var visitor = new ParameterVisitor(parameterToReplace, accessMember); var newBody= visitor.Visit(conversion.Body); return Expression.Lambda(newBody, newParameter); }
public ConversionFunctionKey(PropertyOrFieldInfo source, PropertyOrFieldInfo dest) { if (source != null) { this.sourceAsString = source.DeclaringType.FullName + "." + source.Name; } else { this.sourceAsString = ""; } if (dest != null) { this.destinationAsString = dest.DeclaringType.FullName + "." + dest.Name; } else { this.destinationAsString = ""; } }
public Expression GetExpressionForMember(PropertyOrFieldInfo member) { foreach (var m in this.Members) { if (member.Equals(m.Member)) { return(m.Expression); } } Expression expression = null; foreach (var cm in this.CustomMappings) { expression = cm.GetExpressionForMember(member); } return(expression); }
public void AddExpressionForMember(PropertyOrFieldInfo member, Expression expression) { var cm = GetCustomMappingForMember(member); if (cm != null) { lock (cm) { cm.Members.Add(new MemberExpressionTuple { Member = member, Expression = expression }); } } else { } }
public Expression GetExpressionForMember(PropertyOrFieldInfo member) { foreach (var m in this.Members) { if (member.Equals(m.Member)) { return m.Expression; } } Expression expression = null; foreach (var cm in this.CustomMappings) { expression = cm.GetExpressionForMember(member); } return expression; }
private CustomMapping GetCustomMappingForMember(PropertyOrFieldInfo member) { if (!this.HasCustomMappingForMember(member)) { foreach (var cm in this.CustomMappings) { var mapping = cm.GetCustomMappingForMember(member); if (mapping == null) { return(mapping); } } return(null); } else { return(this); } }
public ProposedHierarchicalMapping ProposeHierarchicalMapping(PropertyOrFieldInfo destinationMember) { var split = CamelCaseHelper.SplitOnCamelCase(destinationMember.Name); if (split.Count <= 1) { return null; } var sourceMembers = SourceMembers; var memberStack = new List<PropertyOrFieldInfo>(); var applies = GetMemberOnType(sourceType, split, 0, memberStack); if (applies) { return new ProposedHierarchicalMapping(memberStack); } return null; }
private bool HasCustomMappingForMember(PropertyOrFieldInfo member) { var match = this.Members.FirstOrDefault(m => m.Equals(member)); return(match != null); }
public void AddConversionFunction(PropertyOrFieldInfo source, PropertyOrFieldInfo destination, LambdaExpression conversion) { this.conversionFunctions[new ConversionFunctionKey(source, destination)] = conversion; }
private string GetParameterName(PropertyOrFieldInfo member) { return member.Name; }
private string GetParameterName(PropertyOrFieldInfo member) { return member.Name + "#" + currentID++; }