diff Implab.ServiceHost/Unity/SerializedParameterElement.cs @ 274:22629bf26121 v3

Unity xml configuration, alpha2
author cin
date Fri, 27 Apr 2018 04:47:52 +0300
parents 79110a16cab7
children 6fefd5811b9b
line wrap: on
line diff
--- a/Implab.ServiceHost/Unity/SerializedParameterElement.cs	Thu Apr 26 19:35:01 2018 +0300
+++ b/Implab.ServiceHost/Unity/SerializedParameterElement.cs	Fri Apr 27 04:47:52 2018 +0300
@@ -1,18 +1,28 @@
+using System;
 using System.Xml;
 using System.Xml.Schema;
 using System.Xml.Serialization;
 
 namespace Implab.ServiceHost.Unity
 {
-    public class SerializedParameterElement : InjectionParameterElement {
+    public class SerializedParameterElement : InjectionParameterElement, ISerializedValue {
         [XmlAttribute("href")]
         public string Location { get; set; }
 
         [XmlAnyElement]
         public XmlElement[] Content { get; set; }
 
-        internal override object Resolve(RegistrationContext context) {
-            return context.Resolve(this);
+        public XmlReader GetReader() {
+            if (!string.IsNullOrEmpty(Location))
+                return XmlReader.Create(Location);
+            if (Content != null && Content.Length > 0)
+                return Content[0].CreateNavigator().ReadSubtree();
+
+            throw new Exception("No content found, expected XML document");
+        }
+
+        internal override void Visit(InjectionValueBuilder builder) {
+            builder.Visit(this);
         }
     }
 }
\ No newline at end of file