public static void Register <T, TDiagnostic>(this IConfiguration configuration, ISpecification <T> constraint, TDiagnostic instance) where TDiagnostic : IDiagnostic { configuration.@Do(cfg => { cfg.Register <TDiagnostic>(() => instance); cfg.Register <T, TDiagnostic>(constraint); }); }
protected void RegisterCore <TDiagnostic>(TDiagnostic diagnostic) where TDiagnostic : IDiagnostic { configuration.@Do(cfg => { cfg.Register(() => diagnostic); factory.@Do(f => { var spec = f(null).Unwrap(); modifier.@Do(m => spec = m(spec)); cfg.Register <T, TDiagnostic>(spec); }); }); }