private static void ConfigureClass(Type type, IRegistry registry, FireOptions fireOption, DependencyMap dependencyMap) { var inst = new LooseConstructorInstance(context => { var ctorArgs = type .GetGreediestCtor() .GetParameters() .Select(p => context.GetInstance(p.ParameterType)); return Notifiable.MakeForClass(type, fireOption, ctorArgs.ToArray(), new ProxyGenerator(), dependencyMap); }); registry.For(type).Use(inst); }
public void Process(Type type, Registry registry) { if(type.IsAbstract || type.IsEnum) return; var ctor = type.GetGreediestCtor(); if(!ctor.HasOptionalParameters()) return; var name = _namer(type); var instances = _registrations .Select(r => r(registry, type)) .Eval() .Each(instance => instance.WithName(name)); var parameters = ctor.GetOptionalParameters(); foreach(var parameter in parameters) foreach(var instance in instances) instance.Child(parameter.Name).Is(parameter.DefaultValue); }