##// END OF EJS Templates
Добавлена метка v3.0.16 для набора изменений 00a2d52813ee
Добавлена метка v3.0.16 для набора изменений 00a2d52813ee

File last commit:

r289:95896f882995 v3.0.14 v3
r298:a7c3390f6ac8 default
Show More
SerializedParameterElement.cs
32 lines | 1.1 KiB | text/x-csharp | CSharpLexer
/ Implab.ServiceHost / src / Unity / SerializedParameterElement.cs
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace Implab.ServiceHost.Unity
{
public class SerializedParameterElement : AbstractInjectionParameter {
[XmlAttribute("href")]
public string Location { get; set; }
[XmlAnyElement]
public XmlElement[] Content { get; set; }
public XmlReader GetReader(InjectionParameterBuilder builder) {
if (!string.IsNullOrEmpty(Location))
return XmlReader.Create(builder.Root.MakeLocationUri(Location).ToString());
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))
builder.SetValue(type, serializer.Deserialize(reader));
}
}
}