comparison Implab.ServiceHost/Unity/RegisterElement.cs @ 277:963b17c275be v3

Refactoring Added <array> element to injection parameters Working on registrations of factories
author cin
date Sat, 28 Apr 2018 18:48:09 +0300
parents 22629bf26121
children 8714471e8d78
comparison
equal deleted inserted replaced
276:b4e0f81c7425 277:963b17c275be
4 using Unity.Registration; 4 using Unity.Registration;
5 5
6 namespace Implab.ServiceHost.Unity { 6 namespace Implab.ServiceHost.Unity {
7 7
8 [XmlRoot("register", Namespace = Schema.ContainerConfigurationNamespace)] 8 [XmlRoot("register", Namespace = Schema.ContainerConfigurationNamespace)]
9 public class RegisterElement : AbstractRegistration { 9 public class RegisterElement : TypeAbstractRegistration {
10 10
11 /// <summary> 11 /// <summary>
12 /// An optional type which is registered as a service in the container, must be assignable to <see cref="ProvidesType">. 12 /// An optional type which is registered as a service in the container, must be assignable to <see cref="ProvidesType">.
13 /// </summary> 13 /// </summary>
14 [XmlAttribute("mapTo")] 14 [XmlAttribute("mapTo")]
16 16
17 17
18 [XmlElement("constructor", typeof(ConstructorInjectionElement))] 18 [XmlElement("constructor", typeof(ConstructorInjectionElement))]
19 [XmlElement("property", typeof(PropertyInjectionElement))] 19 [XmlElement("property", typeof(PropertyInjectionElement))]
20 [XmlElement("method", typeof(MethodInjectionElement))] 20 [XmlElement("method", typeof(MethodInjectionElement))]
21 public AbstractInjectionElement[] Injectors { get; set; } 21 public AbstractMemberInjection[] Injectors { get; set; }
22 22
23 public override void Visit(ContainerBuilder context) { 23 public override Type GetImplementationType(Func<string, Type> resolver) {
24 context.Visit(this); 24 return string.IsNullOrEmpty(MapToType) ? null : resolver(MapToType);
25 } 25 }
26
27 public override void Visit(TypeRegistrationBuilder builder) {
28 if(Injectors != null)
29 foreach(var injector in Injectors)
30 injector.Visit(builder);
31 }
32
33
26 } 34 }
27 35
28 } 36 }