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 SetLinkTargetValue(TLinkedSource linkedSource, int linkIndex, Func <int, TAbstractLinkTarget> getLinkTargetValueForIndex) { if (HasLinkTargetValue(linkedSource, linkIndex)) { return; } var value = getLinkTargetValueForIndex(linkIndex); if ((object)value == null) { return; } _linkTarget.SetLinkTargetValue( linkedSource, value, linkIndex ); }