CreateCandidate() private method

private CreateCandidate ( ) : MethodCandidate
return MethodCandidate
示例#1
0
        internal MethodCandidate CreateByRefReducedCandidate()
        {
            if (!_hasByRef)
            {
                return(null);
            }

            var reducedMapping = new ParameterMapping(_resolver, _overload, _argNames);

            reducedMapping.MapParameters(true);
            return(reducedMapping.CreateCandidate());
        }
示例#2
0
        private void AddBasicMethodTargets(MethodBase method) {
            Assert.NotNull(method);

            var mapping = new ParameterMapping(this, method, null, _argNames);

            mapping.MapParameters(false);

            foreach (var defaultCandidate in mapping.CreateDefaultCandidates()) {
                AddSimpleTarget(defaultCandidate);
            }

            var byRefReducedCandidate = mapping.CreateByRefReducedCandidate();
            if (byRefReducedCandidate != null) {
                AddSimpleTarget(byRefReducedCandidate);
            }

            AddSimpleTarget(mapping.CreateCandidate());
        }
        internal MethodCandidate CreateByRefReducedCandidate() {
            if (!_hasByRefOrOut) {
                return null;
            }

            var reducedMapping = new ParameterMapping(_resolver, _method, _parameterInfos, _argNames);
            reducedMapping.MapParameters(true);
            return reducedMapping.CreateCandidate();
        }
示例#4
0
        private void AddBasicMethodTargets(OverloadInfo method) {
            Assert.NotNull(method);

            var mapping = new ParameterMapping(this, method, _argNames);

            mapping.MapParameters(false);

            foreach (var defaultCandidate in mapping.CreateDefaultCandidates()) {
                AddSimpleTarget(defaultCandidate);
            }

            // TODO: We reduce out/ref parameters only for the main overload.
            // We should rather treat all out params as optional (either a StrongBox is provided or not).
            var byRefReducedCandidate = mapping.CreateByRefReducedCandidate();
            if (byRefReducedCandidate != null) {
                AddSimpleTarget(byRefReducedCandidate);
            }

            AddSimpleTarget(mapping.CreateCandidate());
        }