/// <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 TestMethod1() { DynamicAssembly dynamicAssembly = new DynamicAssembly(); dynamicAssembly.DEBUG_MODE = true; FeignClientHttpProxyTypeBuilder feignClientTypeBuilder = new FeignClientHttpProxyTypeBuilder(dynamicAssembly); FeignClientTypeInfo feignClientTypeInfo = feignClientTypeBuilder.Build(typeof(ITestService)); FeignClientTypeInfo feignClientTypeInfo1 = feignClientTypeBuilder.Build(typeof(ITestControllerService)); feignClientTypeBuilder.Save(); }
public void TestMethod1() { FeignClientHttpRequest request = new FeignClientHttpRequest(null, null, null, null, null); request.RequestHeaderHandlers = new List <Request.Headers.IRequestHeaderHandler>(); Request.Headers.IRequestHeaderHandler requestHeaderHandler = null; request.RequestHeaderHandlers.Add(requestHeaderHandler); DynamicAssembly dynamicAssembly = new DynamicAssembly(); dynamicAssembly.DEBUG_MODE = true; FeignClientHttpProxyTypeBuilder feignClientTypeBuilder = new FeignClientHttpProxyTypeBuilder(dynamicAssembly); FeignClientTypeInfo feignClientTypeInfo = feignClientTypeBuilder.Build(typeof(ITestService)); FeignClientTypeInfo feignClientTypeInfo1 = feignClientTypeBuilder.Build(typeof(ITestControllerService)); feignClientTypeBuilder.Save(); }