internal static ChainedProjection <TOutItem, TInItem, TMiddleItem, SingleProjection <TOutItem, TMiddleItem>, TProjection> Bridge <TOutItem, TInItem, TMiddleItem, TProjection>(ref TProjection left, Func <TMiddleItem, TOutItem> right, string rightName) where TProjection : struct, IStructProjection <TMiddleItem, TInItem> { if (right == null) { throw CommonImplementation.ArgumentNull(rightName); } var rightBridge = new SingleProjection <TOutItem, TMiddleItem>(right); return(new ChainedProjection <TOutItem, TInItem, TMiddleItem, SingleProjection <TOutItem, TMiddleItem>, TProjection>(ref left, ref rightBridge)); }
internal static ChainedProjection <TOutItem, TInItem, TMiddleItem, SingleProjection <TOutItem, TMiddleItem>, SingleProjection <TMiddleItem, TInItem> > Bridge <TOutItem, TInItem, TMiddleItem>(Func <TInItem, TMiddleItem> left, Func <TMiddleItem, TOutItem> right, string rightName) { if (right == null) { throw CommonImplementation.ArgumentNull(rightName); } var leftBridge = new SingleProjection <TMiddleItem, TInItem>(left); var rightBridge = new SingleProjection <TOutItem, TMiddleItem>(right); return(new ChainedProjection <TOutItem, TInItem, TMiddleItem, SingleProjection <TOutItem, TMiddleItem>, SingleProjection <TMiddleItem, TInItem> >(ref leftBridge, ref rightBridge)); }