コード例 #1
0
        protected override void Serialize(object target, XmlElementContext context)
        {
            var obj = XmlElementSerializer.GetElement(context.XElement, true, _xmlElementTarget);

            if (!(obj is XElement))
            {
                throw new InvalidOperationException("Attributes not Supported");
            }
            _serializer?.Serialize(context.XElement.CreateWriter(), GetValue(target));
        }
コード例 #2
0
        protected override void Deserialize(object target, XmlElementContext context)
        {
            var obj = XmlElementSerializer.GetElement(context.XElement, false, _xmlElementTarget);

            if (!(obj is XElement ele))
            {
                return;
            }
            SetValue(target, _serializer?.Deserialize(ele.CreateReader(ReaderOptions.OmitDuplicateNamespaces)));
        }
コード例 #3
0
        protected override SerializationContext GetRealContext(XmlElementContext origial, SerializerMode mode)
        {
            if (!(XmlElementSerializer.GetElement(origial.XElement, mode == SerializerMode.Serialize, _target) is XElement ele))
            {
                _useSnapShot = false;
                return(origial.Original);
            }

            _useSnapShot = true;
            return(origial.Original.CreateSnapshot(ele.Value));
        }
コード例 #4
0
        private IEnumerable <XElement>?GetElements(bool forWrite, [NotNull] XElement context, int count)
        {
            var realRoot = XmlElementSerializer.GetElement(context, forWrite, _rootTarget) as XElement;

            if (realRoot == null && forWrite)
            {
                throw new InvalidOperationException("Attributes not Supported");
            }

            return(realRoot == null
                ? Enumerable.Empty <XElement>()
                : XmlElementSerializer.GetElements(realRoot, forWrite, _target, count));
        }