public static Server UseDashBoard(this Server server) { foreach (var serverServiceDefinition in server.Services) { var bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; var callHandlers = serverServiceDefinition.GetPropertyValue <IDictionary>("CallHandlers", bindingFlags); GrpcServiceExtension.BuildMeta(callHandlers); } //注册基础服务 server.UseGrpcService(new List <IGrpcService> { new CmdService(), new MetaService() }); return(server); }
/// <summary> /// 使用DashBoard(提供基础服务) /// </summary> /// <param name="server"></param> /// <returns></returns> public static Server UseDashBoard(this Server server) { var bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; /* * callHandlers: * * 定义在server中 * private readonly Dictionary<string, IServerCallHandler> callHandlers = new Dictionary<string, IServerCallHandler>(); */ // serverServiceDefinition.GetCallHandlers(); var callHandlers = server.GetFieldValue <IDictionary>("callHandlers", bindingFlags); GrpcServiceExtension.BuildMeta(callHandlers.Item1); //注册基础服务 server.UseGrpcService(new List <IGrpcService> { new CmdService(), new MetaService() }); return(server); }
public static ServerServiceDefinition UseDashBoard(this ServerServiceDefinition serverServiceDefinition) { var bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; var callHandlers = serverServiceDefinition.GetPropertyValue <IDictionary>("CallHandlers", bindingFlags); #region 注册基本服务 var metaService = new MetaService(); var metaBuilder = ServerServiceDefinition.CreateBuilder(); metaService.RegisterMethod(metaBuilder); var metaCallHandlers = metaBuilder.GetFieldValue <IDictionary>("callHandlers", bindingFlags).Item1; foreach (DictionaryEntry callHandler in callHandlers) { metaCallHandlers.Add(callHandler.Key, callHandler.Value); } #endregion //生成Grpc元数据信息 GrpcServiceExtension.BuildMeta(metaCallHandlers); return(metaBuilder.Build()); }