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]; } }