Revenj.DictionaryServiceLocator.TryResolveType C# (CSharp) Method

TryResolveType() private method

private TryResolveType ( Type target ) : object
target System.Type
return object
        private object TryResolveType(Type target)
        {
            var ctors =
                (from ctr in target.GetConstructors()
                 let args = ctr.GetParameters()
                 orderby args.Length descending
                 select new { args, ctr });
            foreach (var it in ctors)
            {
                var args = new List<object>();
                foreach (var a in it.args)
                    args.Add(Resolve(a.ParameterType, false));
                if (args.Contains(null))
                    continue;
                var instance = it.ctr.Invoke(args.ToArray());
                CacheIf(target, instance);
                return instance;
            }
            return null;
        }