private void SetLinkTargetValues <TInclude>( TLinkedSource linkedSource, Func <TLink, TInclude> getInclude, Func <TLink, TInclude, int, TAbstractLinkTarget> getLinkTargetValue) { var links = GetLinks(linkedSource); _linkTarget.LazyInit(linkedSource, links.Count); for (var linkIndex = 0; linkIndex < links.Count; linkIndex++) { var link = links[linkIndex]; if (link == null) { continue; } var include = getInclude(link); if (include == null) { continue; } _linkTarget.SetLinkTargetValue( linkedSource, getLinkTargetValue(link, include, linkIndex), linkIndex ); } }
private void SetLinkTargetValues <TInclude>( TLinkedSource linkedSource, Func <TLink, TInclude> getInclude, Func <TLink, TInclude, int, TAbstractLinkTarget> getLinkTargetValue) { var links = GetLinks(linkedSource); _linkTarget.LazyInit(linkedSource, links.Count); TAbstractLinkTarget GetLinkTargetValueForIndex(int index) => GetLinkTargetValue(links, index, getInclude, getLinkTargetValue); for (var linkIndex = 0; linkIndex < links.Count; linkIndex++) { SetLinkTargetValue(linkedSource, linkIndex, GetLinkTargetValueForIndex); } }