Auto status change to "Under Review"
| @@ -43,8 +43,12 namespace Implab.Playground { | |||||
| 43 | static void Main(string[] args) { |
|
43 | static void Main(string[] args) { | |
| 44 | var container = new UnityContainer(); |
|
44 | var container = new UnityContainer(); | |
| 45 |
|
45 | |||
|
|
46 | var ctx = new ConfigurationContext(container); | |||
|
|
47 | ||||
| 46 | var conf = SerializationHelpers.DeserializeFromFile<ContainerElement>("data/sample.xml"); |
|
48 | var conf = SerializationHelpers.DeserializeFromFile<ContainerElement>("data/sample.xml"); | |
| 47 |
|
49 | |||
|
|
50 | ctx.Visit(conf); | |||
|
|
51 | ||||
| 48 | Console.WriteLine($"Registrations: {conf.Items.Count}"); |
|
52 | Console.WriteLine($"Registrations: {conf.Items.Count}"); | |
| 49 |
|
53 | |||
| 50 | } |
|
54 | } | |
| @@ -15,6 +15,18 namespace Implab.ServiceHost.Unity | |||||
| 15 | get; set; |
|
15 | get; set; | |
| 16 | } |
|
16 | } | |
| 17 |
|
17 | |||
|
|
18 | [XmlElement("signleton", typeof(SimgletonLifetimeElement))] | |||
|
|
19 | [XmlElement("context", typeof(ContextLifetimeElement))] | |||
|
|
20 | [XmlElement("container", typeof(ContainerLifetimeElement))] | |||
|
|
21 | [XmlElement("hierarchy", typeof(HierarchicalLifetimeElement))] | |||
|
|
22 | public LifetimeElement Lifetime {get; set;} | |||
|
|
23 | ||||
|
|
24 | /// <summary> | |||
|
|
25 | /// A type specification for the service registration, | |||
|
|
26 | /// </summary> | |||
|
|
27 | [XmlAttribute("provides")] | |||
|
|
28 | public string ProvidesType { get; set; } | |||
|
|
29 | ||||
| 18 | public void Visit(ConfigurationContext context) { |
|
30 | public void Visit(ConfigurationContext context) { | |
| 19 | context.Visit(this); |
|
31 | context.Visit(this); | |
| 20 | } |
|
32 | } | |
| @@ -38,6 +38,9 namespace Implab.ServiceHost.Unity { | |||||
| 38 | var schema = new ConfigurationSchema(); |
|
38 | var schema = new ConfigurationSchema(); | |
| 39 |
|
39 | |||
| 40 | schema.DefineMapping<RegisterElement>(); |
|
40 | schema.DefineMapping<RegisterElement>(); | |
|
|
41 | schema.DefineMapping<IncludeElement>(); | |||
|
|
42 | schema.DefineMapping<AssemblyElement>(); | |||
|
|
43 | schema.DefineMapping<NamespaceElement>(); | |||
| 41 |
|
44 | |||
| 42 | return schema; |
|
45 | return schema; | |
| 43 | } |
|
46 | } | |
| @@ -22,7 +22,10 namespace Implab.ServiceHost.Unity { | |||||
| 22 | } |
|
22 | } | |
| 23 |
|
23 | |||
| 24 | public void WriteXml(XmlWriter writer) { |
|
24 | public void WriteXml(XmlWriter writer) { | |
| 25 | throw new System.NotImplementedException(); |
|
25 | foreach(var item in Items) { | |
|
|
26 | var serializer = new XmlSerializer(item.GetType()); | |||
|
|
27 | serializer.Serialize(writer, item); | |||
|
|
28 | } | |||
| 26 | } |
|
29 | } | |
| 27 | } |
|
30 | } | |
| 28 | } No newline at end of file |
|
31 | } | |
| @@ -9,23 +9,11 namespace Implab.ServiceHost.Unity { | |||||
| 9 | public class RegisterElement : AbstractRegistration { |
|
9 | public class RegisterElement : AbstractRegistration { | |
| 10 |
|
10 | |||
| 11 | /// <summary> |
|
11 | /// <summary> | |
| 12 | /// An optional type specification for the service registration, |
|
12 | /// An optional type which is registered as a service in the container, must be assignable to <see cref="ProvidesType">. | |
| 13 | /// must be assignable from the type specified by <see cref="ImplementedType"/> |
|
|||
| 14 | /// </summary> |
|
|||
| 15 | [XmlAttribute("provides")] |
|
|||
| 16 | public string ProvidesType { get; set; } |
|
|||
| 17 |
|
||||
| 18 | /// <summary> |
|
|||
| 19 | /// The type which is registered as a service in the container. |
|
|||
| 20 | /// </summary> |
|
13 | /// </summary> | |
| 21 | [XmlAttribute("type")] |
|
14 | [XmlAttribute("type")] | |
| 22 | public string ImplementedType { get; set; } |
|
15 | public string ImplementedType { get; set; } | |
| 23 |
|
16 | |||
| 24 | [XmlElement("signleton", typeof(SimgletonLifetimeElement))] |
|
|||
| 25 | [XmlElement("context", typeof(ContextLifetimeElement))] |
|
|||
| 26 | [XmlElement("container", typeof(ContainerLifetimeElement))] |
|
|||
| 27 | [XmlElement("hierarchy", typeof(HierarchicalLifetimeElement))] |
|
|||
| 28 | public LifetimeElement Lifetime {get; set;} |
|
|||
| 29 |
|
|
17 | ||
| 30 | [XmlElement("constructor", typeof(ConstructorInjectionElement))] |
|
18 | [XmlElement("constructor", typeof(ConstructorInjectionElement))] | |
| 31 | [XmlElement("property", typeof(PropertyInjectionElement))] |
|
19 | [XmlElement("property", typeof(PropertyInjectionElement))] | |
| @@ -1,7 +1,12 | |||||
|
|
1 | using System.Xml; | |||
|
|
2 | using System.Xml.Schema; | |||
|
|
3 | using System.Xml.Serialization; | |||
|
|
4 | ||||
| 1 | namespace Implab.ServiceHost.Unity |
|
5 | namespace Implab.ServiceHost.Unity | |
| 2 | { |
|
6 | { | |
| 3 | public class SerializedParameterElement : InjectionParameterElement |
|
7 | public class SerializedParameterElement : InjectionParameterElement { | |
| 4 | { |
|
8 | ||
| 5 |
|
9 | [XmlAnyElement] | ||
|
|
10 | public XmlElement[] Content { get; set; } | |||
| 6 | } |
|
11 | } | |
| 7 | } No newline at end of file |
|
12 | } | |
General Comments 3
ok, latest stable version should be in default
You need to be logged in to leave comments.
Login now
