• C# Trick


    1.
    ThreadPool.QueueUserWorkItem(AsyncAppend, loggingEvent);
    2.
    Username = string.IsNullOrEmpty(Username) ? "guest" : Username;
    3.
    public void Until(Func<bool> condition, Action success, Action failure)
    {
       var timeIsUp = DateTime.Now.AddMilliseconds(timeout);
       while (DateTime.Now.CompareTo(timeIsUp) < 0)
      { 
         if (condition())
        {
          success();
         return;
       }
       new ManualResetEvent(false).WaitOne(interval);
      }  
       failure();
    }
    4.
    DateTime.Now.CompareTo(DateTime.Now.AddMilliseconds(timeout)) < 0
    5.
    public void Until(Func<bool> condition, Action failure)
    {
        Until(condition, () => { }, failure);
    }
    6.
    public static DateTime FromUnixTimestamp(this double dateTime)
    {
        var datetime = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddMilliseconds(dateTime).ToLocalTime();
        return datetime;
    }

    7.
    public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
    {
         foreach (T item in enumeration)
        {
          action(item);
         }
    }

    8.
    public static string AsString(this byte[] byteArray)
    {
         return System.Text.Encoding.UTF8.GetString(byteArray);
    }

    9.
    public static string TruncateString(this string value, int len)
    {
        return value.Length < len ? value : value.Substring(0, len);
    }

    10:
    c# project directories

    packages
    src
    --bin
    --Properties
    --obj
    --Folder
    --xxxxx.cs
    --xxxxxx.csproj
    --packages.config
    build
    tools
    test
    --bin
    --test.csproj
    README.md
    project.sln

    11:
    public static object CreateInstance(Type targetType)
    {
         return targetType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, new Type[0], null).Invoke(null);
    }
    12:

    public static object InvokeMethod(object target, string name, params object[] args)
    {
         #if NETSTANDARD1_3
            return target.GetType().GetTypeInfo().GetDeclaredMethod(name).Invoke(target, args);
        #else
           return target.GetType().GetMethod(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance, null, GetTypesArray(args), null).Invoke(target, args);
        #endif
    }

    13:
    public static void SetField(object target, string name, object val)
    {
    target.GetType().GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance).SetValue(target, val);
    }

    14:
    public static void SetProperty(object target, string name, object val, params object[] index)
    {
    target.GetType().GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance).SetValue(target, val, index);
    }

    15:

    // Provides a set of methods and properties that help you trace the execution of
    // your code. This class cannot be inherited.
    public sealed class System.Diagnostics.Trace
    Trace.Listeners.Add(new TextWriterTraceListener(@"./trace.txt"));
    Trace.AutoFlush = true;
    Trace.WriteLine("Test Trace");

    16:
    System.Diagnostics.EventLog
    System.Diagnostics.Debug
    System.Diagnostics.Trace

    17:
    [Serializable]
    public sealed class PropertiesDictionary : ReadOnlyPropertiesDictionary, ISerializable, IDictionary

    [ThreadStatic]
    private static PropertiesDictionary _dictionary;

    18:
    if (!(key is string))
    private readonly Hashtable m_hashtable = new Hashtable();

    19:
    throw new NotSupportedException("This is a Read Only Dictionary and can not be modified");
    throw new ArgumentException("key must be a string");

    20:
    [System.Security.SecurityCritical]

    21:
    private readonly static ThreadContextProperties xxxNotice = new ThreadContextProperties();
    private readonly static ThreadContextStacks s_stacks = new ThreadContextStacks(xxxNotice);

    22:
    public abstract object this[string key] { get; set; }
    override public object this[string key]
    {
    get
    {
    #if NETCF
    PropertiesDictionary _dictionary = GetProperties(false);
    #endif
    if (_dictionary != null)
    {
    return _dictionary[key];
    }
    return null;
    }
    set
    {
    GetProperties(true)[key] = value;
    }
    }

    object IDictionary.this[object key]
    {
    get
    {
    if (!(key is string))
    {
    throw new ArgumentException("key must be a string", "key");
    }
    return InnerHashtable[key];
    }
    set
    {
    if (!(key is string))
    {
    throw new ArgumentException("key must be a string", "key");
    }
    InnerHashtable[key] = value;
    }
    }
    23:
    log4net.MDC for ThreadContextVariable in Dictionary
    log4net.NDC for ThreadContextStack in Stack

    24:
    log4net.Appender.SmtpAppender

    25:
    [DllImport("libc", CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl)]
    private static extern void syslog(int priority, string format, string message);

    26:
    public static TimeSpan operator -(DateTime d1, DateTime d2);

    27:
    public static event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
    public static bool HasListeners => LogMessagePublished != null;
    DefaultLogger = logger ?? throw new ArgumentNullException(nameof(logger));
    DefaultLogger = logger != null? logger:throw new ArgumentNullException(nameof(logger));

    28:
    if (packet is MqttDisconnectPacket disconnectPacket)
    do disconnectPacket

    29:
    IMQTTChannel
    {
    Endpoint;
    IsSecureConnection;
    X509Certificate2 ClientCertificate;
    Task ConnectAsync(CancellationToken);
    Task DisconnectAsync(CancellationToken);
    Task<int> ReadAsync(byte[],offset,count,CancellationToken);
    Task WriteAsync(byte[] buffer,offset,count,CancellationToken);
    }

    30:
    await Task.Factory.FromAsync(socket.BeginConnect, socket.EndConnect, _options.Server, _options.GetPort(), null).ConfigureAwait(false);

  • 相关阅读:
    NEC学习 ---- 模块 -多行式面包屑导航
    NEC学习 ---- 模块 -文本圆角背景导航
    NEC学习 ---- 布局 -三列,右侧自适应
    NEC学习 ---- 布局 -三列,左侧自适应
    NEC学习 ---- 布局 -三列, 左右定宽,中间自适应
    NEC学习 ---- 布局 -两列定宽
    NEC学习 ---- 布局 -两列, 右侧定宽,左侧自适应
    jquery weibo 留言
    原生js+本地储存登录注册
    原生捕鱼
  • 原文地址:https://www.cnblogs.com/iiiDragon/p/Trick.html
Copyright © 2020-2023  润新知