| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 | using System.Collections.Concurrent;namespace WCS.Core;public static class Ltc{    private static readonly ConcurrentDictionary<Thread, Channel> Channels = new();    public static void SetChannel(Channel channel)    {        Channels[Thread.CurrentThread] = channel;        //ClearChannel();    }    public static Channel GetChannel()    {        if (Channels.ContainsKey(Thread.CurrentThread))            return Channels[Thread.CurrentThread];        return null;    }    //static ConcurrentDictionary<Channel, List<LogInfo>> Msgs = new ConcurrentDictionary<Channel, List<LogInfo>>();    //static void ClearChannel()    //{    //    if (Msgs.TryGetValue(GetChannel(), out var list))    //        list.Clear();    //}    //public static string GetLogStr()    //{    //    var channel = GetChannel();    //    if (Msgs.TryGetValue(channel, out var list))    //    {    //        var msg = "-------------------"+channel + "--------------------\n" + string.Join('\n', list.Select(v => $"{string.Join('\n', v)}"));    //        return msg;    //    }    //    else    //    {    //        return "";    //    }     //}    //public static List<LogInfo> GetLogInfo()    //{    //    var channel = GetChannel();    //    if (Msgs.TryGetValue(channel, out var list))    //    {    //        return list;    //    }    //    return new List<LogInfo>();    //}    //public static void Log(string msg,LogLevel level,ErrorType type)    //{     //    var channel = GetChannel();    //    if (!Msgs.TryGetValue(channel, out var list))    //    {    //        list = new List<LogInfo>();    //        Msgs[channel] = list;    //    }    //    list.Add(new LogInfo { Message = msg, Level = level, Type = type, Channel = channel });    //}    //public static void Publish(World world)    //{     //    var channel = GetChannel();    //    if (Msgs.TryGetValue(channel, out var list))    //    {    //        var msg = string.Join('\n', list);     //        world.Ex().Publish(channel, msg);     //    }     //}     //private static string ResultString<T>(T obj)    //{    //    if (obj == null)    //    {    //        return "null";    //    }    //    else if (obj is bool)    //    {    //        var b = obj as Boolean?;    //        return b.Value ? "成立" : "不成立";    //    }    //    else if (obj is System.Collections.ICollection)    //    {    //        var coll = obj as System.Collections.ICollection;    //        return coll.Count.ToString() + "元素";    //    }    //    return obj.ToString();    //}    //public static T Do<T>(Expression<Func<T>> exp)    //{    //    var msg = exp.ExpToString();    //    msg += "  结果:";    //    try    //    {    //        var res = exp.Compile().Invoke();    //        msg += res;    //        return res;    //    }    //    catch (Exception ex)    //    {     //        throw;    //    }    //    finally    //    {    //        Log(msg, LogLevel.Low, ErrorType.Kown);    //    }    //}    //public static T Do<T1, T>(T1 obj, Expression<Func<T1, T>> exp)    //{    //    var msg = "";    //    try    //    {    //        try    //        {    //            msg = exp.ExpToString();    //        }    //        catch (Exception ex2)    //        {    //        }    //        msg += "  结果:";    //        var res = exp.Compile().Invoke(obj);    //        msg += ResultString(res);    //        return res;    //    }    //    catch (Exception ex)    //    {      //        throw;    //    }    //    finally    //    {    //        Log(msg, LogLevel.Low, ErrorType.Kown);    //    }    //}    //public static T Do<T1, T2, T>(T1 obj, T2 obj2, Expression<Func<T1, T2, T>> exp)    //{    //    var msg = exp.ExpToString();    //    msg += "  结果:";    //    try    //    {    //        var res = exp.Compile().Invoke(obj, obj2);    //        msg += ResultString(res);    //        return res;    //    }    //    catch (Exception ex)    //    {     //        throw;    //    }    //    finally    //    {    //        Log(msg, LogLevel.Low, ErrorType.Kown);    //    }    //}    //public static T Do<T1, T2, T3, T>(T1 obj, T2 obj2, T3 obj3, Expression<Func<T1, T2, T3, T>> exp)    //{    //    var msg = exp.ExpToString();    //    msg += "  结果:";    //    try    //    {    //        var res = exp.Compile().Invoke(obj, obj2, obj3);    //        msg += ResultString(res);    //        return res;    //    }    //    catch (Exception ex)    //    {     //        throw;    //    }    //    finally    //    {    //        Log(msg, LogLevel.Low, ErrorType.Kown);    //    }    //}}//public class LogInfo//{//    public ErrorType Type { get; set; }//    public LogLevel Level { get; set; }//    public Channel Channel { get; set; }//    public string Message { get; set; }//    public override string ToString()//    {//        //var a = ErrorType.Unkown;//        return $"类型:{Type.Description()},级别:{Level.Description()},内容:{Message}";//    }//}public class Channel{    public string Item = "";    public string Stage = "";    public string System = "";    public string World = "";    public override string ToString()    {        return $"{World}-{Stage}-{System}-{Item}";    }}//public enum ErrorType//{//    [Description("未知")]//    Unkown = 0,//    [Description("已知")]//    Kown = 1//}//public enum LogLevel//{//    [Description("低")]//    Low = 0,//    [Description("中")]//    Mid = 1,//    [Description("高")]//    High = 2//}//public class KnownException : Exception//{ //    public LogLevel Level { get; set; }//    public KnownException(string msg, LogLevel level) : base(msg)//    {//        this.Level = level;//    }//}
 |