: 1;  //if there are no parameters then it is a perfect fit!

        public ParametersMatch(IEnumerable <ParameterInfo> parameters, List <PropertyInfo> propertiesToMatch, MatchNameAndType propMatcher)
        {
            var matchedProps = new List <PropertyMatch>();

            foreach (var parameter in parameters)
            {
                matchedProps.Add(FindMatch(parameter, propertiesToMatch, propMatcher));
            }

            MatchedPropertiesInOrder = matchedProps.ToImmutableList();
        }
        private static PropertyMatch FindMatch(ParameterInfo parameter, IEnumerable <PropertyInfo> propertiesToCheck, MatchNameAndType propMatcher)
        {
            PropertyMatch bestMatch = null;

            foreach (var propertyInfo in propertiesToCheck)
            {
                var match = propMatcher(parameter.Name, parameter.ParameterType, propertyInfo);
                if (bestMatch == null || bestMatch.Score < match.Score)
                {
                    bestMatch = match;
                }
            }
            return(bestMatch);
        }
Example #3
0
 public MethodCtorMatcher(MatchNameAndType publicPropMatcher)
 {
     _publicPropMatcher = publicPropMatcher;
 }