惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
Y
Y Combinator Blog
Jina AI
Jina AI
G
Google Developers Blog
Last Week in AI
Last Week in AI
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
The GitHub Blog
The GitHub Blog
D
Docker
量子位
罗磊的独立博客
腾讯CDC

博客园 - Andrew Yin

数据访问层组件设计以及选型意识流 第四次扩展的讨论 数据访问层组件设计以及选型意识流 第三次封装(极致、极简而不简单) 数据访问层组件设计以及选型意识流 第二次封装以及各种牢骚 数据访问层组件设计以及选型意识流 第一次封装 数据访问层组件设计以及选型意识流 开篇 UTF-8, Unicode, GB2312三种编码方式解析, 深入研究汉字编码 C++中的模板实例:链表模板 一步一步学Ruby系列(二):Ruby中的函数 一步一步学Ruby系列(一):Ruby基础知识 .NET下的AOP: PostSharp 原理分析 AST,DLR,Expression Tree-----------推荐一位牛人的博客! C# 交互式SHELL C#中的 eval System.Web.Routing命名空间代码解析(四) Route解析中用到的实体类,一些以"Segment”为名的类 System.Web.Routing命名空间代码解析(三) RouteCollection类 System.Web.Routing命名空间代码解析(二) Routing类(上) System.Web.Routing命名空间代码解析(一) RouteBase类,RouteData类,RouteValueDictionary类 ASP.NET MVC中的各种上下文对象 有关string和Cookie的几个有用的扩展方法 操作Enum的一些实用方法
反射加异步,根据枚举值来异步执行方法
Andrew Yin · 2008-12-04 · via 博客园 - Andrew Yin

反射加异步,根据枚举值来异步执行方法:

        protected delegate void AsyncWriteLogMsgEvent(string message);
        
protected delegate void AsyncWriteLogExceptionEvent(string message, Exception exception);internal void Log(LogLevel level, string message)
        {
            Type thisType 
= this.GetType();
            MethodInfo mi 
= thisType.GetMethod(SiteExtensions.GetEnumName(level));
            
if (mi == null || !mi.IsPublic || mi.IsStatic || mi.IsConstructor) return;
            AsyncWriteLogMsgEvent writer 
= m => mi.Invoke(thisnew object[] { m });
            writer.BeginInvoke(message, 
nullnull);
        }
internal void Log(LogLevel level, string message, Exception exception)
        {
            Type thisType 
= this.GetType();
            MethodInfo mi 
= thisType.GetMethod(SiteExtensions.GetEnumName(level));
            
if (mi == null || !mi.IsPublic || mi.IsStatic || mi.IsConstructor) return;
            AsyncWriteLogExceptionEvent writer 
= (m, e) => mi.Invoke(thisnew object[] {m, e});
            writer.BeginInvoke(message, exception, 
nullnull);
        }