void ResolveCore(Type key, Diagnostics.IDiagnosticContext context, ICollection <Diagnostics.IDiagnostic> result) { resolutionTree[key].@Do(resolutions => { foreach (var resolveFunc in resolutions) { resolveFunc(context).@Do( diagnosticType => ResolveCore(diagnosticType) .@Do(result.Add) ); } }); }
// #region Resolve IEnumerable <Diagnostics.IDiagnostic> IConfiguration.Resolve(Diagnostics.IDiagnosticContext context) { var result = new List <Diagnostics.IDiagnostic>(4); context.@Do(ctx => { ctx.Assembly.@Do(_ => ResolveCore <Assembly>(ctx, result)); ctx.Type.@Do(_ => ResolveCore <Type>(ctx, result)); ctx.Member.@Do(_ => ResolveCore <MemberInfo>(ctx, result)); }); return(result); }
void ResolveCore <T>(Diagnostics.IDiagnosticContext context, ICollection <Diagnostics.IDiagnostic> result) { ResolveCore(typeof(T), context, result); }