Example #1
0
                    private List <object> GetConstructorParameters(IBuilderContext context)
                    {
                        var             parameters  = new List <object>();
                        var             policy      = new DefaultUnityConstructorSelectorPolicy();
                        var             constructor = policy.SelectConstructor(context);
                        ConstructorInfo constructorInfo;

                        if (constructor == null)
                        {
                            // Unit constructor selector doesn't seem to want to find abstract class protected constructors
                            // quickly find one here...
                            var buildKey           = (NamedTypeBuildKey)context.BuildKey;
                            var largestConstructor = buildKey.Type.GetConstructors(
                                BindingFlags.Public |
                                BindingFlags.NonPublic |
                                BindingFlags.Instance)
                                                     .OrderByDescending(o => o.GetParameters().Length)
                                                     .FirstOrDefault();

                            constructorInfo = largestConstructor;
                        }
                        else
                        {
                            constructorInfo = constructor.Constructor;
                        }

                        foreach (var parameterInfo in constructorInfo.GetParameters())
                        {
                            parameters.Add(_container.Resolve(parameterInfo.ParameterType));
                        }

                        return(parameters);
                    }