public override OutputEntry Process(Dependency dep) { var fields = new List<ProcessedField>(); if (!Dependency(dep, (f, v, m) => fields.Add(new ProcessedField("Dependency " + f, v, m)))) return null; if (!Matches(Source, dep.Source, (f, v, m) => fields.Add(new ProcessedField("Source " + f, v, m)))) return null; if (!Matches(Target, dep.Target, (f, v, m) => fields.Add(new ProcessedField("Target " + f, v, m)))) return null; var messsage = new OutputMessage(); messsage.Append("Dependency between ") .Append(dep.Source, OutputMessage.ProjInfo.Name) .Append(" and ") .Append(dep.Target, OutputMessage.ProjInfo.Name) .Append(Allow ? "" : " not") .Append(" allowed"); return new DependencyRuleMatch(Allow, "Dependency", Severity, messsage, this, dep.AsList(), fields); }