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();
        }