public static XElement CreateObjectReferenceListElement <T>(this IXmlSerializerRepository <SerializationContext> serializerRepository, T objectWithReference, Func <T, IEnumerable <IWithId> > referenceRetriever,
                                                                    string referenceElementListName, string referenceElementName)
        {
            var referenceElementList = serializerRepository.CreateElement(referenceElementListName);

            foreach (var reference in referenceRetriever(objectWithReference))
            {
                var referenceElement = serializerRepository.CreateElement(referenceElementName);
                referenceElement.AddAttribute(Constants.Serialization.Attribute.ID, reference.Id);
                referenceElementList.Add(referenceElement);
            }
            return(referenceElementList);
        }
      public XObject Serialize(TObject objectToSerialize, TContext context)
      {
         var listNode = _serializerRepository.CreateElement(MappingName);
         var enumeration = _enumerableMap.Enumerate(objectToSerialize);

         //enumeration is null?return node only if empty enumeration should be generated
         if (enumeration == null)
            return _serializerRepository.CreateNodeForEmptyEnumeration ? listNode : null;

         var list = enumeration.ToList();

         //enumeration is empty and empty node should not be generated? returns null
         if (!list.Any() && !_serializerRepository.CreateNodeForEmptyEnumeration)
            return null;

         list.Each(child => listNode.Add(childNodeFor(child, context)));
         return listNode;
      }
Beispiel #3
0
        protected override void Context()
        {
            //Cannot generate mock or stub for IXmlSerializerRepository surely because of XElement...
            _serializer           = A.Fake <IXmlSerializer <TestSerializationContext> >();
            _serializerRepository = A.Fake <IXmlSerializerRepository <TestSerializationContext> >();
            A.CallTo(_serializerRepository).WithReturnType <IXmlSerializer <TestSerializationContext> >().Returns(_serializer);
            A.CallTo(() => _serializerRepository.CreateElement(A <string> ._))
            .ReturnsLazily(x => new XElement(x.GetArgument <string>(0)));

            _enumerableMap = A.Fake <IEnumerableMap <Container, IEntity, TestSerializationContext> >();
            A.CallTo(() => _serializer.Name).Returns("Serializer");
            sut      = new XmlEnumerationNodeMapper <Container, IEntity, TestSerializationContext>(_serializerRepository, _enumerableMap);
            _context = new TestSerializationContext();
        }