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);
 }
Beispiel #5
0
 public ServiceDescriptor(Type serviceType, Type implementationType, FeignClientLifetime lifetime)
 {
     ServiceType        = serviceType;
     ImplementationType = implementationType;
     Lifetime           = lifetime;
 }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
 }
Beispiel #10
0
 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);
 }