public override void Execute(ConfigurationResolverArgs args)
        {
            if (args.Parameters != null && args.Parameters.ContainsKey(MultiInterfaceTypesKey) && args.RequestedType.IsInterface)
            {
                var types = args.Parameters[MultiInterfaceTypesKey] as IEnumerable<Type>;
               
                if (types!= null && types.All(x => x.IsInterface))
                {
                    var typeContext = args.AbstractTypeCreationContext;
                    var originalType = typeContext.RequestedType;
                    args.Parameters.Remove(MultiInterfaceTypesKey);
                    var configuations = new List<AbstractTypeConfiguration>();
                    foreach (var type in types)
                    {
                        typeContext.RequestedType = type;
                        var result = args.Service.RunConfigurationPipeline(typeContext);
                        configuations.Add(result.Result);
                    }
                    args.Parameters[CreateMultiInferaceTask.MultiInterfaceConfigsKey] = configuations;
                    args.Parameters[MultiInterfaceTypesKey] = types;
                    typeContext.RequestedType = originalType;
                }
            }

            base.Execute(args);

        }
        /// <summary>
        /// Executes the specified args.
        /// </summary>
        /// <param name="args">The args.</param>
        public void Execute(ConfigurationResolverArgs args)
        {
            if (args.Result == null)
            {
                args.Result = args.Context[args.RequestedType];
            }

        }