view Implab.ServiceHost/Unity/FactoryActivator.cs @ 278:6691aff01de1 v3

Implab: added XmlDefaultSeializer (SerializersPool is now obsolete) Implab.ServiceHost: rewritten TypeReference (added support for nested types), stable API
author cin
date Thu, 03 May 2018 09:59:44 +0300
parents
children 8714471e8d78
line wrap: on
line source

using System;

namespace Implab.ServiceHost.Unity {
    public class FactoryActivator : FactoryAbstractRegistratrion {

        public Type FactoryType { get; set; }

        public string FactoryName { get; set; }

        public new Type RegistrationType { get; set; }

        public override void Visit(FactoryRegistrationBuilder builder) {
            base.Visit(builder);

            builder.GetType()
                .GetMethod(
                    nameof(FactoryRegistrationBuilder.SetFactoryDependency)
                    , new[] { typeof(string) }
                )
                .MakeGenericMethod(FactoryType, RegistrationType)
                .Invoke(builder, new[] { FactoryName });
        }

        public override Type GetRegistrationType(Func<string, Type> resolver) {
            return RegistrationType;
        }

    }
}