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; } }); } }
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; } }); } }