private static bool ProcessCustomResolvers(TypeAdapterConfigSettings <TSource, TDestination> config, MemberInfo destinationMember, Func <object> propertyModelFactory, List <PropertyModel <TSource, TDestination> > properties, IDictionary <Type, Func <object, object> > destinationTransforms) { var resolvers = config.Resolvers; if (resolvers != null && resolvers.Count > 0) { //Todo: Evaluate this to convert to foreach bool hasCustomResolve = false; for (int j = 0; j < resolvers.Count; j++) { var resolver = resolvers[j]; if (destinationMember.Name.Equals(resolver.MemberName)) { var destinationProperty = (PropertyInfo)destinationMember; var setter = PropertyCaller <TDestination> .CreateSetMethod(destinationProperty); if (setter == null) { continue; } var propertyModel = (PropertyModel <TSource, TDestination>)propertyModelFactory(); propertyModel.ConvertType = 5; propertyModel.Setter = setter; propertyModel.SetterPropertyName = ExtractPropertyName(setter, "Set"); propertyModel.CustomResolver = resolver.Invoker; propertyModel.Condition = resolver.Condition; var destinationPropertyType = typeof(TDestination); if (destinationTransforms.ContainsKey(destinationPropertyType)) { propertyModel.DestinationTransform = destinationTransforms[destinationPropertyType]; } properties.Add(propertyModel); hasCustomResolve = true; break; } } if (hasCustomResolve) { return(true); } } return(false); }
private static bool ProcessIgnores(TypeAdapterConfigSettings <TSource, TDestination> config, MemberInfo destinationMember) { var ignoreMembers = config.IgnoreMembers; if (ignoreMembers != null && ignoreMembers.Count > 0) { bool ignored = false; for (int j = 0; j < ignoreMembers.Count; j++) { if (destinationMember.Name.Equals(ignoreMembers[j])) { ignored = true; break; } } if (ignored) { return(true); } } return(false); }