public IEnumerable<IMapping<IMemberContext, XObject>> MapForSerialization(IMemberContext source, XElement target, IAdviceRequester adviceRequester) { if (source == null) throw new ArgumentNullException("source"); var elementType = GetElementType(source.GetActualType()); if (elementType == null) throw new ArgumentException("Collection mapper has been invoked for target that is not a known list type: '" + source.GetActualType() + "'.", "target"); var sourceObject = source.GetValue(); if (sourceObject == null) return Enumerable.Empty<IMapping<IMemberContext, XObject>>(); return sourceObject.Members .Select(CreateMapping); }
public ISerializer Select(IMemberContext source, XObject target, IAdviceRequester adviceRequester) { var actualType = _typeConverter.GetActualType(source.GetActualType(), adviceRequester); if (actualType == null) return null; if (_log.IsDebugEnabled) _log.Debug("Selected collection serialization for source '" + source + "' and target '" + target.ToFriendlyName() + "'."); return _serializer; }
private static string NameElementFromElementAttributeExactType(IMemberContext memberContext) { return memberContext.Attributes.OfType<XmlElementAttribute>() .Where(a => a.Type == memberContext.GetActualType()) .Where(a => !string.IsNullOrWhiteSpace(a.ElementName)) .Select(a => a.ElementName) .FirstOrDefault(); }
private static string NameElementFromElementAttributeInstanceOfType(IMemberContext memberContext) { return memberContext.Attributes.OfType<XmlElementAttribute>() .Where(a => a.Type != null && memberContext.GetActualType().IsSubTypeOf(a.Type)) .Select(a => a.ElementName) .FirstOrDefault(); }
private static XName NameElementFromActualType(IMemberContext memberContext) { var actualType = memberContext.GetActualType(); if (actualType == null) return null; return actualType.Name.SafeToXName(); }