Boo.Lang.Runtime.MethodResolver.ResolveMethod C# (CSharp) Метод

ResolveMethod() публичный Метод

public ResolveMethod ( IEnumerable candidates ) : CandidateMethod
candidates IEnumerable
Результат CandidateMethod
        public CandidateMethod ResolveMethod(IEnumerable<MethodInfo> candidates)
        {
            List<CandidateMethod> applicable = FindApplicableMethods(candidates);
            if (applicable.Count == 0) return null;
            if (applicable.Count == 1) return applicable[0];

            List<CandidateMethod> dataPreserving = applicable.FindAll(DoesNotRequireConversions);
            if (dataPreserving.Count > 0) return BestMethod(dataPreserving);
            return BestMethod(applicable);
        }

Usage Example

Пример #1
0
        private bool ProcessMetaMethodInvocation(MethodInvocationExpression node)
        {
            var targetEntity = node.Target.Entity;
            if (null == targetEntity) return false;
            if (!IsOrContainMetaMethod(targetEntity)) return false;

            var arguments = GetMetaMethodInvocationArguments(node);
            var argumentTypes = MethodResolver.GetArgumentTypes(arguments);
            var resolver = new MethodResolver(argumentTypes);
            var method = resolver.ResolveMethod(EnumerateMetaMethods(targetEntity));
            if (null == method) return false;

            Node replacement = InvokeMetaMethod(method, arguments);
            ReplaceMetaMethodInvocationSite(node, replacement);

            return true;
        }
All Usage Examples Of Boo.Lang.Runtime.MethodResolver::ResolveMethod