Beispiel #1
0
        private static void ApplyOptions(TinyIoCContainer.RegisterOptions r, DefaultRegistrationBuilderBase instanceRegistration)
        {
            object scopeConfigObj;
            var    singleton = false;

            if (instanceRegistration.Options.TryGetValue("Singleton", out scopeConfigObj))
            {
                singleton = (bool)scopeConfigObj;
            }
            if (singleton)
            {
                r.AsSingleton();
            }
        }
Beispiel #2
0
        private static bool TranslateFactoryRegistration(TinyIoCContainer container, DefaultRegistrationBuilderBase factoryRegistration, Type t)
        {
            var registrationType = factoryRegistration.GetType().GetGenericTypeDefinition();

            if (registrationType != typeof(DefaultFactoryRegistrationBuilder <>))
            {
                return(false);
            }
            var factory = (Delegate)factoryRegistration.GetType().GetProperty("Factory").GetGetMethod().Invoke(factoryRegistration, null);
            var r       = container.Register(t, (c, p) => factory.DynamicInvoke(new DependencyResolverWrapper(c)));

            ApplyOptions(r, factoryRegistration);

            return(true);
        }
Beispiel #3
0
        private static bool TranslateConstructorRegistration(TinyIoCContainer container, DefaultRegistrationBuilderBase constructorRegistration, Type t)
        {
            var registrationType = constructorRegistration.GetType().GetGenericTypeDefinition();

            if (registrationType != typeof(DefaultConstructorRegistrationBuilder <>))
            {
                return(false);
            }

            var r = container.Register(t, constructorRegistration.SelfType);

            ApplyOptions(r, constructorRegistration);
            return(true);
        }
Beispiel #4
0
        private static bool TranslateInstanceRegistration(TinyIoCContainer container, DefaultRegistrationBuilderBase instanceRegistration, Type t)
        {
            var registrationType = instanceRegistration.GetType().GetGenericTypeDefinition();

            if (registrationType != typeof(DefaultInstanceRegistrationBuilder <>))
            {
                return(false);
            }
            var instance = instanceRegistration.GetType().GetProperty("Instance").GetGetMethod().Invoke(instanceRegistration, null);
            var r        = container.Register(t, instance);

            ApplyOptions(r, instanceRegistration);

            return(true);
        }