コード例 #1
0
        public object Deserialize(XmlParser parser, XmlDeserializationContext deserializationContext)
        {
            var instance = Activator.CreateInstance(deserializationContext.DeserializationType);

            foreach (var property in deserializationContext.DeserializationType.GetProperties())
            {
                if (!IsNotIgnored(property))
                {
                    continue;
                }

                if (GetElementAnnotation(property) != null && GetAttributeAnnotation(property) != null)
                {
                    throw new XmlException("Property " + property.Name + " cannot be annotated with both " +
                                           typeof(XmlElement).FullName + " and " + typeof(XmlAttribute).FullName);
                }

                var value = IsXmlElement(property)
                    ? ProcessElement(parser, deserializationContext, property)
                    : ProcessAttribute(parser, deserializationContext, property);

                property.SetValue(instance, value);
            }

            return(instance);
        }
コード例 #2
0
 void IXmlDeserializable.Deserialize(XmlDeserializationContext context)
 {
     Deserialize(context);
     Devices  = new ReadOnlyCollection <Device> (Devices);
     Services = new ReadOnlyCollection <Service> (Services);
     Icons    = new ReadOnlyCollection <Icon> (Icons);
 }
コード例 #3
0
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Artists = new ReadOnlyCollection <PersonWithRole> (Artists);
            Genres  = new ReadOnlyCollection <string> (Genres);
        }
コード例 #4
0
 public virtual Uri DeserializeUri(XmlDeserializationContext context)
 {
     if (root != null) {
         return root.DeserializeUrl (context);
     }
     return null;
 }
コード例 #5
0
            protected override XmlDeserializableTestBaseClass DeserializeChild(XmlDeserializationContext context)
            {
                var child = new XmlDeserializableTestSubClass();

                ((IXmlDeserializable)child).Deserialize(context);
                return(child);
            }
コード例 #6
0
ファイル: AudioBook.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Producers = new ReadOnlyCollection<string> (Producers);
            Contributors = new ReadOnlyCollection<string> (Contributors);
        }
コード例 #7
0
ファイル: Movie.cs プロジェクト: kobeyoung81/JBServer
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            ScheduledStartTimes = new ReadOnlyCollection <DateTime> (ScheduledStartTimes);
            ScheduledEndTimes   = new ReadOnlyCollection <DateTime> (ScheduledEndTimes);
        }
コード例 #8
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
        public virtual Argument DeserializeArgument(XmlDeserializationContext context)
        {
            var argument = CreateArgument();

            Deserialize(argument, context);
            return(argument);
        }
コード例 #9
0
            protected virtual DeserializerTestClass DeserializeChild(XmlDeserializationContext context)
            {
                var child = new DeserializerTestClass("hello world");

                context.AutoDeserialize(child);
                return(child);
            }
コード例 #10
0
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Producers    = new ReadOnlyCollection <string> (Producers);
            Contributors = new ReadOnlyCollection <string> (Contributors);
        }
コード例 #11
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
        public virtual Service DeserializeService(XmlDeserializationContext context)
        {
            var service = CreateService();

            Deserialize(service, context);
            return(service);
        }
コード例 #12
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
        public virtual Icon DeserializeIcon(XmlDeserializationContext context)
        {
            var icon = CreateIcon();

            Deserialize(icon, context);
            return(icon);
        }
コード例 #13
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
 void Deserialize(IXmlDeserializable deserializable, XmlDeserializationContext context)
 {
     if (deserializable != null)
     {
         deserializable.Deserialize(context);
     }
 }
コード例 #14
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
        public virtual Device DeserializeDevice(XmlDeserializationContext context)
        {
            var device = CreateDevice();

            Deserialize(device, context);
            return(device);
        }
コード例 #15
0
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Publishers = new ReadOnlyCollection <string> (Publishers);
            Rights     = new ReadOnlyCollection <string> (Rights);
        }
コード例 #16
0
ファイル: Container.cs プロジェクト: zaroof/mono-upnp
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            SearchClasses = new ReadOnlyCollection <ClassReference> (SearchClasses);
            CreateClasses = new ReadOnlyCollection <ClassReference> (CreateClasses);
        }
コード例 #17
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
        public virtual StateVariable DeserializeStateVariable(ServiceController controller,
                                                              XmlDeserializationContext context)
        {
            var state_variable = CreateStateVariable(controller);

            Deserialize(state_variable, context);
            return(state_variable);
        }
コード例 #18
0
ファイル: Deserializer.cs プロジェクト: kobeyoung81/JBServer
        public virtual ServiceAction DeserializeAction(ServiceController controller,
                                                       XmlDeserializationContext context)
        {
            var action = CreateAction(controller);

            Deserialize(action, context);
            return(action);
        }
コード例 #19
0
 public virtual Uri DeserializeUri(XmlDeserializationContext context)
 {
     if (root != null)
     {
         return(root.DeserializeUrl(context));
     }
     return(null);
 }
コード例 #20
0
ファイル: MusicTrack.cs プロジェクト: kobeyoung81/JBServer
        // TODO what is the deal with this?!?!?!
        //public Uri LyricsUri { get; private set; }

        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Artists      = new ReadOnlyCollection <PersonWithRole> (Artists);
            Albums       = new ReadOnlyCollection <string> (Albums);
            Playlists    = new ReadOnlyCollection <string> (Playlists);
            Contributors = new ReadOnlyCollection <string> (Contributors);
        }
コード例 #21
0
            public void ShouldThrowXmlExceptionWhenDeserializerIsNotFound()
            {
                var context = new XmlDeserializationContext(_document, Mock.Of <XPathNavigator>(), typeof(string), new List <IXmlDeserializer>());
                var type    = typeof(string);

                var result = Assert.Throws <XmlException>(() => context.Deserialize(_parser, _nodes, type));

                Assert.Equal("Could not find deserializer for type " + type, result.Message);
            }
コード例 #22
0
        protected virtual DeviceType DeserializeDeviceType(XmlDeserializationContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            return(DeviceType.Parse(context.Reader.ReadElementContentAsString()));
        }
コード例 #23
0
 public virtual ServiceDescription DeserializeService(XmlDeserializationContext context)
 {
     if (Root != null)
     {
         var service = Root.CreateServiceDescription();
         service.Deserialize(context);
         return(service);
     }
     return(null);
 }
コード例 #24
0
 protected override void Deserialize(XmlDeserializationContext context)
 {
     if (context.Reader.ReadToDescendant(local_name, @namespace))
     {
         using (var reader = context.Reader.ReadSubtree()) {
             reader.Read();
             Value = context.Deserialize <T> ();
         }
     }
 }
コード例 #25
0
 public virtual IconDescription DeserializeIcon(XmlDeserializationContext context)
 {
     if (Root != null)
     {
         var icon = Root.CreateIconDescription(this);
         icon.Deserialize(context);
         return(icon);
     }
     return(null);
 }
コード例 #26
0
        void IXmlDeserializer.Deserialize(XmlDeserializationContext context)
        {
            Deserialize(context);

            services.Lock();
            devices.Lock();
            icons.Lock();

            Verify();
        }
コード例 #27
0
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Artists             = new ReadOnlyCollection <PersonWithRole> (Artists);
            Albums              = new ReadOnlyCollection <string> (Albums);
            ScheduledStartTimes = new ReadOnlyCollection <DateTime> (ScheduledStartTimes);
            ScheduledEndTimes   = new ReadOnlyCollection <DateTime> (ScheduledEndTimes);
            Contributors        = new ReadOnlyCollection <string> (Contributors);
        }
コード例 #28
0
ファイル: TextItem.cs プロジェクト: kobeyoung81/JBServer
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Authors      = new ReadOnlyCollection <PersonWithRole> (Authors);
            Publishers   = new ReadOnlyCollection <string> (Publishers);
            Contributors = new ReadOnlyCollection <string> (Contributors);
            Relations    = new ReadOnlyCollection <Uri> (Relations);
            Rights       = new ReadOnlyCollection <string> (Rights);
        }
コード例 #29
0
        void IXmlDeserializer.Deserialize(XmlDeserializationContext context)
        {
            Deserialize(context);

            services = MakeReadOnly(ServiceList);
            devices  = MakeReadOnly(DeviceList);
            icons    = MakeReadOnly(IconList);

            Verify();
        }
コード例 #30
0
        protected override void Deserialize(XmlDeserializationContext context)
        {
            base.Deserialize(context);

            Genres     = new ReadOnlyCollection <string> (Genres);
            Actors     = new ReadOnlyCollection <PersonWithRole> (Actors);
            Directors  = new ReadOnlyCollection <string> (Directors);
            Producers  = new ReadOnlyCollection <string> (Producers);
            Publishers = new ReadOnlyCollection <string> (Publishers);
            Relations  = new ReadOnlyCollection <Uri> (Relations);
        }
コード例 #31
0
 public void DeserializeElement(XmlDeserializationContext context)
 {
     if (context.Reader.LocalName == "Foo")
     {
         Foo = "Foo is " + context.Reader.ReadElementContentAsString();
     }
     else
     {
         context.AutoDeserializeElement(this);
     }
 }
コード例 #32
0
 protected internal virtual Uri DeserializeUrl(XmlDeserializationContext context)
 {
     try {
         var url = context.Reader.ReadString ();
         if (Uri.IsWellFormedUriString (url, UriKind.Absolute)) {
             return new Uri (url);
         } else {
             return new Uri (UrlBase, url);
         }
     } catch (Exception e) {
         throw new UpnpDeserializationException ("There was a problem deserializing a URL.", e);
     }
 }
コード例 #33
0
ファイル: StateVariable.cs プロジェクト: kobeyoung81/JBServer
        protected override void DeserializeElement(XmlDeserializationContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (context.Reader.Name == "allowedValueList")
            {
                allowed_values = new List <string> ();
            }
            context.AutoDeserializeElement(this);
        }
コード例 #34
0
ファイル: Arguments.cs プロジェクト: pacificIT/mono-upnp
 protected override void Deserialize (XmlDeserializationContext context)
 {
     // TODO clean this for safety
     var reader = context.Reader;
     Helper.ReadToNextElement (reader);
     ActionName = reader.LocalName;
     ServiceType = reader.NamespaceURI;
     var depth = reader.Depth;
     Helper.ReadToNextElement (reader);
     while (reader.NodeType == XmlNodeType.Element && reader.Depth > depth) {
         arguments.Add (reader.LocalName, reader.ReadElementContentAsString ());
         while (reader.NodeType != XmlNodeType.Element && reader.Depth > depth) {
             reader.Read ();
         }
     }
 }
コード例 #35
0
 void IXmlDeserializer.Deserialize(XmlDeserializationContext context)
 {
     Deserialize (context);
     IsReadOnly = true;
 }
コード例 #36
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 public virtual Device DeserializeDevice (XmlDeserializationContext context)
 {
     var device = CreateDevice ();
     Deserialize (device, context);
     return device;
 }
コード例 #37
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 void Deserialize (IXmlDeserializable deserializable, XmlDeserializationContext context)
 {
     if (deserializable != null) {
         deserializable.Deserialize (context);
     }
 }
コード例 #38
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 public virtual StateVariable DeserializeStateVariable (ServiceController controller,
                                                        XmlDeserializationContext context)
 {
     var state_variable = CreateStateVariable (controller);
     Deserialize (state_variable, context);
     return state_variable;
 }
コード例 #39
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 public virtual ServiceAction DeserializeAction (ServiceController controller,
                                                 XmlDeserializationContext context)
 {
     var action = CreateAction (controller);
     Deserialize (action, context);
     return action;
 }
コード例 #40
0
ファイル: AudioItem.cs プロジェクト: pacificIT/mono-upnp
 protected override void DeserializeElement (XmlDeserializationContext context)
 {
     context.AutoDeserializeElement (this);
 }
コード例 #41
0
 void IXmlDeserializable.DeserializeElement(XmlDeserializationContext context)
 {
     DeserializeElement (context);
 }
コード例 #42
0
 void IXmlDeserializable.DeserializeAttribute(XmlDeserializationContext context)
 {
     DeserializeAttribute (context);
 }
コード例 #43
0
 public virtual Uri DeserializeUri(XmlDeserializationContext context)
 {
     return root.DeserializeUrl (context);
 }
コード例 #44
0
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Artists = new ReadOnlyCollection<PersonWithRole> (Artists);
            Producers = new ReadOnlyCollection<string> (Producers);
            Contributors = new ReadOnlyCollection<string> (Contributors);
            Genres = new ReadOnlyCollection<string> (Genres);
            Rights = new ReadOnlyCollection<string> (Rights);
        }
コード例 #45
0
ファイル: MusicArtist.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Genres = new ReadOnlyCollection<string> (Genres);
        }
コード例 #46
0
ファイル: TextItem.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Authors = new ReadOnlyCollection<PersonWithRole> (Authors);
            Publishers = new ReadOnlyCollection<string> (Publishers);
            Contributors = new ReadOnlyCollection<string> (Contributors);
            Relations = new ReadOnlyCollection<Uri> (Relations);
            Rights = new ReadOnlyCollection<string> (Rights);
        }
コード例 #47
0
ファイル: Container.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            SearchClasses = new ReadOnlyCollection<ClassReference> (SearchClasses);
            CreateClasses = new ReadOnlyCollection<ClassReference> (CreateClasses);
        }
コード例 #48
0
 protected abstract void DeserializeAttribute(XmlDeserializationContext context);
コード例 #49
0
ファイル: AudioItem.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Publishers = new ReadOnlyCollection<string> (Publishers);
            Genres = new ReadOnlyCollection<string> (Genres);
            Relations = new ReadOnlyCollection<Uri> (Relations);
            Rights = new ReadOnlyCollection<string> (Rights);
        }
コード例 #50
0
 protected abstract void DeserializeElement(XmlDeserializationContext context);
コード例 #51
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 public virtual Icon DeserializeIcon (XmlDeserializationContext context)
 {
     var icon = CreateIcon ();
     Deserialize (icon, context);
     return icon;
 }
コード例 #52
0
ファイル: Object.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Resources = new ReadOnlyCollection<Resource> (Resources);
        }
コード例 #53
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 public virtual Argument DeserializeArgument (XmlDeserializationContext context)
 {
     var argument = CreateArgument ();
     Deserialize (argument, context);
     return argument;
 }
コード例 #54
0
ファイル: Object.cs プロジェクト: pacificIT/mono-upnp
 protected override void DeserializeAttribute (XmlDeserializationContext context)
 {
     context.AutoDeserializeAttribute (this);
 }
コード例 #55
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 protected virtual ServiceController DeserializeServiceController (Service service, XmlDeserializationContext context)
 {
     var service_controller = CreateServiceController (service);
     Deserialize (service_controller, context);
     return service_controller;
 }
コード例 #56
0
ファイル: MusicVideoClip.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Artists = new ReadOnlyCollection<PersonWithRole> (Artists);
            Albums = new ReadOnlyCollection<string> (Albums);
            ScheduledStartTimes = new ReadOnlyCollection<DateTime> (ScheduledStartTimes);
            ScheduledEndTimes = new ReadOnlyCollection<DateTime> (ScheduledEndTimes);
            Contributors = new ReadOnlyCollection<string> (Contributors);
        }
コード例 #57
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 protected virtual Root DeserializeRoot (Uri url, XmlDeserializationContext context)
 {
     root = CreateRoot (url);
     Deserialize (root, context);
     return root;
 }
コード例 #58
0
ファイル: Movie.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            ScheduledStartTimes = new ReadOnlyCollection<DateTime> (ScheduledStartTimes);
            ScheduledEndTimes = new ReadOnlyCollection<DateTime> (ScheduledEndTimes);
        }
コード例 #59
0
ファイル: Deserializer.cs プロジェクト: automaters/Mono.Upnp
 public virtual Service DeserializeService (XmlDeserializationContext context)
 {
     var service = CreateService ();
     Deserialize (service, context);
     return service;
 }
コード例 #60
0
ファイル: MusicAlbum.cs プロジェクト: pacificIT/mono-upnp
        protected override void Deserialize (XmlDeserializationContext context)
        {
            base.Deserialize (context);

            Artists = new ReadOnlyCollection<PersonWithRole> (Artists);
            Producers = new ReadOnlyCollection<string> (Producers);
            Genres = new ReadOnlyCollection<string> (Genres);
            AlbumArtUris = new ReadOnlyCollection<Uri> (AlbumArtUris);
        }