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());
        }