コード例 #1
0
        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);
            });
        }
コード例 #2
0
ファイル: ChildProjection.cs プロジェクト: zzekikaya/fubumvc
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }