Mercurial > pub > ImplabNet
annotate Implab.ServiceHost/Unity/RegisterElement.cs @ 273:79110a16cab7 v3
Working on Unity xml configuration: Refactoring in progress
author | cin |
---|---|
date | Thu, 26 Apr 2018 19:35:01 +0300 |
parents | 9d1cca834b05 |
children | 22629bf26121 |
rev | line source |
---|---|
269 | 1 using System; |
2 using System.Xml.Serialization; | |
3 using Unity.Lifetime; | |
4 using Unity.Registration; | |
5 | |
6 namespace Implab.ServiceHost.Unity { | |
7 | |
8 [XmlRoot("register", Namespace = Schema.ContainerConfigurationNamespace)] | |
9 public class RegisterElement : AbstractRegistration { | |
10 | |
11 /// <summary> | |
271 | 12 /// An optional type which is registered as a service in the container, must be assignable to <see cref="ProvidesType">. |
269 | 13 /// </summary> |
273
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
14 [XmlAttribute("mapTo")] |
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
15 public string MapToType { get; set; } |
269 | 16 |
17 | |
270 | 18 [XmlElement("constructor", typeof(ConstructorInjectionElement))] |
19 [XmlElement("property", typeof(PropertyInjectionElement))] | |
20 [XmlElement("method", typeof(MethodInjectionElement))] | |
21 public AbstractInjectionElement[] Injectors { get; set; } | |
272 | 22 |
273
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
23 public override void Visit(ContainerContext context) { |
272 | 24 context.Visit(this); |
25 } | |
273
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
26 |
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
27 public virtual Type ResolveImplementationType(ContainerContext ctx) { |
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
28 return string.IsNullOrEmpty(MapToType) ? |
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
29 ResolveRegistrationType(ctx) : |
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
30 ctx.Resolve(MapToType); |
79110a16cab7
Working on Unity xml configuration: Refactoring in progress
cin
parents:
272
diff
changeset
|
31 } |
269 | 32 } |
33 | |
34 } |