RegisterElement.cs
33 lines
| 1.1 KiB
| text/x-csharp
|
CSharpLexer
cin
|
r269 | using System; | |
using System.Xml.Serialization; | |||
using Unity.Lifetime; | |||
using Unity.Registration; | |||
namespace Implab.ServiceHost.Unity { | |||
[XmlRoot("register", Namespace = Schema.ContainerConfigurationNamespace)] | |||
public class RegisterElement : AbstractRegistration { | |||
/// <summary> | |||
cin
|
r271 | /// An optional type which is registered as a service in the container, must be assignable to <see cref="ProvidesType">. | |
cin
|
r269 | /// </summary> | |
cin
|
r273 | [XmlAttribute("mapTo")] | |
public string MapToType { get; set; } | |||
cin
|
r269 | ||
cin
|
r270 | [XmlElement("constructor", typeof(ConstructorInjectionElement))] | |
[XmlElement("property", typeof(PropertyInjectionElement))] | |||
[XmlElement("method", typeof(MethodInjectionElement))] | |||
public AbstractInjectionElement[] Injectors { get; set; } | |||
cin
|
r272 | ||
cin
|
r273 | public override void Visit(ContainerContext context) { | |
cin
|
r272 | context.Visit(this); | |
} | |||
cin
|
r273 | ||
public virtual Type ResolveImplementationType(ContainerContext ctx) { | |||
return string.IsNullOrEmpty(MapToType) ? | |||
ResolveRegistrationType(ctx) : | |||
ctx.Resolve(MapToType); | |||
} | |||
cin
|
r269 | } | |
} |