public static bool Add(IMiddleware MiddleWare, string Name, MiddlewarePriority Priority = MiddlewarePriority.Normal) { string name = Name == null?MiddleWare.GetType().Name : Name; try { MiddleWare.Attach(Language); if (!Middlewares.ContainsKey(Priority)) { Middlewares.Add(Priority, new List <IMiddleware>()); } Middlewares[Priority].Add(MiddleWare); Adding?.Invoke(string.Format("[{0}] MiddleWare: {{ {1} ({2}) }}, Priority={3} }}", Language["STR_SUCCESS"], name, MiddleWare.GetType().Name, Priority), null); return(true); } catch (Exception ex) { Adding?.Invoke(string.Format("[{0}] MiddleWare: {{ {1} ({2}) }}, Priority={3} }} ({4})", Language["STR_ERROR"], name, MiddleWare.GetType().Name, Priority, ex.Message), null); return(false); } }