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

推荐订阅源

A
About on SuperTechFans
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
月光博客
月光博客
美团技术团队
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
爱范儿
爱范儿
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
I
InfoQ
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
F
Fortinet All Blogs

博客园 - 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);
        }