in client/Apache.ShenYu.AspNetCore/Utils/ShenyuCollectionExtensions.cs [37:85]
public static void AddShenyuRegister(this IServiceCollection services, IConfiguration configuration)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
var shenyuOptions = new ShenyuOptions();
configuration.GetSection(ShenyuOptions.Shenyu).Bind(shenyuOptions);
services.Configure<ShenyuOptions>(configuration.GetSection(ShenyuOptions.Shenyu));
services.AddHostedService<ShenyuStartupService>();
if (shenyuOptions.Register.RegisterType.Equals(""))
{
services.AddSingleton<IShenyuRegister, ShenyuHttpRegister>();
}
switch (shenyuOptions.Register.RegisterType)
{
case Constants.RegisterType.Http:
{
services.AddSingleton<IShenyuRegister, ShenyuHttpRegister>();
break;
}
case Constants.RegisterType.Zookeeper:
{
services.AddSingleton<IShenyuRegister, ShenyuZookeeperRegister>();
break;
}
case Constants.RegisterType.Consul:
{
services.AddSingleton<IShenyuRegister, ShenyuConsulRegister>();
break;
}
case Constants.RegisterType.Nacos:
{
services.AddSingleton<IShenyuRegister, ShenyuNacosRegister>();
break;
}
case Constants.RegisterType.Etcd:
{
services.AddSingleton<IShenyuRegister, ShenyuEtcdRegister>();
break;
}
default:
throw new Exception($"not supported type {shenyuOptions.Register.RegisterType}");
}
}