Mercurial > pub > ImplabNet
view Implab.ServiceHost/Unity/SerializedParameterElement.cs @ 278:6691aff01de1 v3
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)
Implab.ServiceHost: rewritten TypeReference (added support for nested types), stable API
author | cin |
---|---|
date | Thu, 03 May 2018 09:59:44 +0300 |
parents | 963b17c275be |
children | e0916ddc9950 |
line wrap: on
line source
using System; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; namespace Implab.ServiceHost.Unity { public class SerializedParameterElement : InjectionParameterElement { [XmlAttribute("href")] public string Location { get; set; } [XmlAnyElement] public XmlElement[] Content { get; set; } 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"); } public override void Visit(InjectionParameterBuilder builder) { var type = builder.ResolveInjectedValueType(TypeName); var serializer = new XmlSerializer(type); using(var reader = GetReader()) builder.SetValue(type, serializer.Deserialize(reader)); } } }