Ejemplo n.º 1
0
        public static RoterInfo GetRouterInfo(string route)
        {
            RoterInfo roterInfo = null;

            RoterInfo.TryGetValue(route, out roterInfo);
            return(roterInfo);
        }
Ejemplo n.º 2
0
        public static void BuildRoter()
        {
            if (Status)
            {
                return;
            }
            Status = true;
            Assembly assembly = Assembly.GetExecutingAssembly();

            foreach (var type in assembly.GetTypes())
            {
                if (!typeof(IRouter).IsAssignableFrom(type))
                {
                    continue;
                }
                foreach (var method in type.GetMethods())
                {
                    var attr = method.GetCustomAttributes().OfType <MyRoter>().FirstOrDefault();
                    if (attr == null)
                    {
                        continue;
                    }
                    if (ExistsRoute(attr.Route))
                    {
                        throw new Exception($"Rotue:[{attr.Route}] exists,check your route");
                    }
                    if (!ExistsInstance(type.FullName))
                    {
                        var ins = CreateInstance(type);
                        AddInstance(type.FullName, ins);
                    }
                    var roterInfo = new RoterInfo
                    {
                        MethodName    = method.Name,
                        ClassType     = type,
                        ClassFullName = type.FullName,
                        methodInfo    = method,
                    };
                    if (!RoterInfo.TryAdd(attr.Route, roterInfo))
                    {
                        Console.WriteLine($"Route :{attr.Route} Add Error"); continue;
                    }
                    Console.WriteLine($"Route :{attr.Route} Add Success");
                }
            }
        }