Mercurial > pub > ImplabNet
diff Implab.ServiceHost/Unity/RegisterElement.cs @ 279:8714471e8d78 v3
Container configuration cleanup, RC2
author | cin |
---|---|
date | Fri, 04 May 2018 18:12:42 +0300 |
parents | 963b17c275be |
children |
line wrap: on
line diff
--- a/Implab.ServiceHost/Unity/RegisterElement.cs Thu May 03 09:59:44 2018 +0300 +++ b/Implab.ServiceHost/Unity/RegisterElement.cs Fri May 04 18:12:42 2018 +0300 @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Xml.Serialization; using Unity.Lifetime; using Unity.Registration; @@ -6,7 +7,7 @@ namespace Implab.ServiceHost.Unity { [XmlRoot("register", Namespace = Schema.ContainerConfigurationNamespace)] - public class RegisterElement : TypeAbstractRegistration { + public class RegisterElement : AbstractRegistration, ITypeRegistration { /// <summary> /// An optional type which is registered as a service in the container, must be assignable to <see cref="ProvidesType">. @@ -20,17 +21,19 @@ [XmlElement("method", typeof(MethodInjectionElement))] public AbstractMemberInjection[] Injectors { get; set; } - public override Type GetImplementationType(Func<string, Type> resolver) { - return string.IsNullOrEmpty(MapToType) ? null : resolver(MapToType); + IEnumerable<ITypeMemberInjection> ITypeRegistration.MemberInjections { + get { + return Injectors; + } } - public override void Visit(TypeRegistrationBuilder builder) { - if(Injectors != null) - foreach(var injector in Injectors) - injector.Visit(builder); + public Type GetImplementationType(ContainerBuilder builder) { + return builder.ResolveType(MapToType); } - + public override void Visit(ContainerBuilder builder) { + builder.Visit(this); + } } } \ No newline at end of file