public FeignClientAttribute(string name, FeignClientLifetime lifetime) { if (name == null) { throw new ArgumentNullException(nameof(name)); } Name = name; Lifetime = lifetime; }
public void AddService(Type serviceType, FeignClientLifetime lifetime) { switch (lifetime) { case FeignClientLifetime.Singleton: Services.TryAddSingleton(serviceType); break; case FeignClientLifetime.Scoped: Services.TryAddScoped(serviceType); break; case FeignClientLifetime.Transient: Services.TryAddTransient(serviceType); break; default: break; } }
public void AddService(Type serviceType, FeignClientLifetime lifetime) { var registerBuilder = ContainerBuilder.RegisterType(serviceType); switch (lifetime) { case FeignClientLifetime.Singleton: registerBuilder.SingleInstance(); break; case FeignClientLifetime.Scoped: registerBuilder.InstancePerLifetimeScope(); break; case FeignClientLifetime.Transient: registerBuilder.InstancePerDependency(); break; default: break; } }
public void AddOrUpdateService(Type serviceType, FeignClientLifetime lifetime) { RemoveService(serviceType); AddService(serviceType, lifetime); }
public ServiceDescriptor(Type serviceType, Type implementationType, FeignClientLifetime lifetime) { ServiceType = serviceType; ImplementationType = implementationType; Lifetime = lifetime; }
ComponentRegistration <T> Lifestyle <T>(ComponentRegistration <T> registration, FeignClientLifetime lifetime) where T : class { switch (lifetime) { case FeignClientLifetime.Transient: return(registration.LifestyleTransient()); case FeignClientLifetime.Singleton: return(registration.LifestyleSingleton()); case FeignClientLifetime.Scoped: return(registration.LifestyleScoped()); default: return(registration); } }
public void AddService(Type serviceType, FeignClientLifetime lifetime) { var registration = Component.For(serviceType); WindsorContainer.Register(Lifestyle(registration, lifetime)); }
public void AddOrUpdateService(Type serviceType, Type implType, FeignClientLifetime lifetime) { AddService(serviceType, implType, lifetime); }
/// <summary> /// 添加FeignClients /// </summary> /// <typeparam name="TFeignBuilder"></typeparam> /// <param name="feignBuilder"></param> /// <param name="assembly">要扫描的程序集</param> /// <param name="lifetime">服务的生命周期</param> /// <returns></returns> public static TFeignBuilder AddFeignClients <TFeignBuilder>(this TFeignBuilder feignBuilder, Assembly assembly, FeignClientLifetime lifetime) where TFeignBuilder : IFeignBuilder { if (assembly == null) { return(feignBuilder); } foreach (var serviceType in assembly.GetTypes()) { FeignClientTypeInfo feignClientTypeInfo = feignBuilder.TypeBuilder.Build(serviceType); if (feignClientTypeInfo == null || feignClientTypeInfo.BuildType == null) { continue; } feignBuilder.Options.Types.Add(feignClientTypeInfo); //FeignClientAttribute feignClientAttribute = serviceType.GetCustomAttribute<FeignClientAttribute>(); FeignClientAttribute feignClientAttribute = serviceType.GetCustomAttributeIncludingBaseInterfaces <FeignClientAttribute>(); feignBuilder.AddService(serviceType, feignClientTypeInfo.BuildType, feignClientAttribute.Lifetime ?? lifetime); // add fallback if (feignClientAttribute.Fallback != null) { feignBuilder.AddService(feignClientAttribute.Fallback, feignClientAttribute.Lifetime ?? lifetime); } if (feignClientAttribute.FallbackFactory != null) { feignBuilder.AddService(feignClientAttribute.FallbackFactory, feignClientAttribute.Lifetime ?? lifetime); } } return(feignBuilder); }
public void AddOrUpdateService(Type serviceType, FeignClientLifetime lifetime) { Services.AddOrUpdate(new ServiceDescriptor(serviceType, serviceType, lifetime)); }
public static TFeignBuilder AddFeignClients <TFeignBuilder>(this TFeignBuilder feignBuilder, Assembly assembly, FeignClientLifetime lifetime) where TFeignBuilder : IFeignBuilder { if (assembly == null) { return(feignBuilder); } foreach (var serviceType in assembly.GetTypes()) { Type proxyType = feignBuilder.TypeBuilder.BuildType(serviceType); if (proxyType == null) { continue; } FeignClientAttribute feignClientAttribute = serviceType.GetCustomAttribute <FeignClientAttribute>(); feignBuilder.AddService(serviceType, proxyType, feignClientAttribute.Lifetime ?? lifetime); // add fallback if (feignClientAttribute.Fallback != null) { feignBuilder.AddService(feignClientAttribute.Fallback, feignClientAttribute.Lifetime ?? lifetime); } if (feignClientAttribute.FallbackFactory != null) { feignBuilder.AddService(feignClientAttribute.FallbackFactory, feignClientAttribute.Lifetime ?? lifetime); } } return(feignBuilder); }