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 } |
