Esempio n. 1
0
        internal virtual void RegisterComponents(ContainerBuilderWrapper builder)
        {
            if (Components != null)
            {
                Components.ForEach(component =>
                {
                    //服务类型
                    Type serviceType = Type.GetType(component.ServiceType, true);
                    //实现类型
                    Type implementType = Type.GetType(component.ImplementType, true);
                    //组件生命周期
                    switch (component.LifetimeScope)
                    {
                    //依赖创建
                    case LifetimeScope.InstancePerDependency:
                        //如果是泛型
                        if (serviceType.GetTypeInfo().IsGenericType || implementType.GetTypeInfo().IsGenericType)
                        {
                            //注册泛型
                            builder.RegisterGeneric(implementType).As(serviceType).InstancePerDependency();
                        }
                        else
                        {
                            builder.RegisterType(implementType).As(serviceType).InstancePerDependency();
                        }
                        break;

                    case LifetimeScope.SingleInstance:    //单例
                        if (serviceType.GetTypeInfo().IsGenericType || implementType.GetTypeInfo().IsGenericType)
                        {
                            builder.RegisterGeneric(implementType).As(serviceType).SingleInstance();
                        }
                        else
                        {
                            builder.RegisterType(implementType).As(serviceType).SingleInstance();
                        }
                        break;

                    default:    //默认依赖创建
                        if (serviceType.GetTypeInfo().IsGenericType || implementType.GetTypeInfo().IsGenericType)
                        {
                            builder.RegisterGeneric(implementType).As(serviceType).InstancePerDependency();
                        }
                        else
                        {
                            builder.RegisterType(implementType).As(serviceType).InstancePerDependency();
                        }
                        break;
                    }
                });
            }
        }
Esempio n. 2
0
        internal virtual void RegisterComponents(ContainerBuilderWrapper builder)
        {
            if (Components != null)
            {
                Components.ForEach(component =>
                {
                    Type serviceType   = Type.GetType(component.ServiceType, true);
                    Type implementType = Type.GetType(component.ImplementType, true);
                    switch (component.LifetimeScope)
                    {
                    case LifetimeScope.InstancePerDependency:
                        if (serviceType.GetTypeInfo().IsGenericType || implementType.GetTypeInfo().IsGenericType)
                        {
                            builder.RegisterGeneric(implementType).As(serviceType).InstancePerDependency();
                        }
                        else
                        {
                            builder.RegisterType(implementType).As(serviceType).InstancePerDependency();
                        }
                        break;

                    case LifetimeScope.SingleInstance:
                        if (serviceType.GetTypeInfo().IsGenericType || implementType.GetTypeInfo().IsGenericType)
                        {
                            builder.RegisterGeneric(implementType).As(serviceType).SingleInstance();
                        }
                        else
                        {
                            builder.RegisterType(implementType).As(serviceType).SingleInstance();
                        }
                        break;

                    default:
                        if (serviceType.GetTypeInfo().IsGenericType || implementType.GetTypeInfo().IsGenericType)
                        {
                            builder.RegisterGeneric(implementType).As(serviceType).InstancePerDependency();
                        }
                        else
                        {
                            builder.RegisterType(implementType).As(serviceType).InstancePerDependency();
                        }
                        break;
                    }
                });
            }
        }