diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab.ServiceHost/Unity/FactoryActivator.cs	Thu May 03 09:59:44 2018 +0300
@@ -0,0 +1,29 @@
+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;
+        }
+
+    }
+}
\ No newline at end of file