Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
InheritingConstructorParameterInstanceProvider.cs 1.1 KiB
Newer Older
using Ninject.Extensions.Factory;
using Ninject.Extensions.Factory.Factory;
using Ninject.Parameters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Navigation;

namespace VECTO3GUI2020.Util
{
    public class InheritingConstructorParameterInstanceProvider : StandardInstanceProvider
    {
        public override object GetInstance(IInstanceResolver instanceResolver, MethodInfo methodInfo, object[] arguments)
        {
            return base.GetInstance(instanceResolver, methodInfo, arguments.Skip(1).ToArray();
        }

        protected override IConstructorArgument[] GetConstructorArguments(MethodInfo methodInfo, object[] arguments)
        {
            //https://stackoverflow.com/questions/32138857/inherit-constructorparameter-from-a-factory
            return methodInfo.GetParameters()
                .Select((parameter, index) =>
                new ConstructorArgument(
                    parameter.Name, arguments[index], true)).Cast<IConstructorArgument>().ToArray();
        }
    }
}