public Release(ReleaseCommand command) { Command = command ?? throw new ArgumentNullException(nameof(command)); T config <T>(T obj) { CONF.Configure(obj, ""); CONF.Configure(obj); Command.Configure(obj, ""); Command.Configure(obj); return(obj); } var info = config(this); var codeBase = new CodeBase(info.Repository); foreach (var action in Actions) { config(action); action.CodeBase = codeBase; action.Solution = codeBase.Solution; action.Work(); } }