public static RoterInfo GetRouterInfo(string route) { RoterInfo roterInfo = null; RoterInfo.TryGetValue(route, out roterInfo); return(roterInfo); }
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"); } } }