public void Write(IProjectionContext <TParent> context, IMediaNode node) { var list = node.AddList(NodeName, LeafName ?? NodeName); var elements = ElementSource(context); var projection = ProjectionSource(context); elements.Each(element => { var childNode = list.Add(); var childContext = context.ContextFor(element); projection.Write(childContext, childNode); }); }
void IProjection <TParent> .Write(IProjectionContext <TParent> context, IMediaNode node) { var value = _source(context); if (value == null) { return; } var childNode = node.AddChild(_name); var childContext = context.ContextFor(value); write(childContext, childNode); }
void IProjection <TParent> .Write(IProjectionContext <TParent> context, IMediaNode node) { var value = context.ValueFor(_accessor) as TChild; if (value == null) { return; } var childNode = node.AddChild(_name); var childContext = context.ContextFor(value); write(childContext, childNode); }
public void Project <T>(IProjectionContext <T> context, IMediaNode childNode, IMediaNode parentNode, string nodeName) { var connegGraph = context.Service <ConnegSettings>().Graph; var projectionType = connegGraph.WriterTypesFor(typeof(TValue)) .FirstOrDefault(x => x.CanBeCastTo <IProjection <TValue> >() && x.IsConcreteWithDefaultCtor()); var childContext = context.ContextFor(_value); if (projectionType == null) { parentNode.SetAttribute(nodeName, _value); } else { var projection = Activator.CreateInstance(projectionType).As <IProjection <TValue> >(); projection.Write(childContext, childNode); } }