在实现自定义 AOP 框架的功能、易用性、文档、示例、社区/支持、VS 集成、已知实现、长期可行性和构建速度方面,哪个更好?
我将从我所知道的开始(到目前为止我只尝试过 PostSharp):
- 微软通用编译器 Instrastruture (CCI):我读过 用于 FxCop、ILMerge、Spec# 和 代码契约(Contract)。看起来级别很低as it does not even take care of correcting offsets for branch codes that are borken when IL is modified with it .
- PostSharp已有 5 年历史,拥有许多 AOP 的功能(例如摘要 有些事情你需要做 手动执行 IL 操作),来源 代码可用、开发/支持 只有一个人,但他正在计划 使这成为一项业务, 文档但可以更好, 构建时间大约是原来的两倍,非常 关于如何注入(inject) IL 的小样本 并且2.0版本即将发布 这有望得到很大改善。
- Mono Cecil:由一个人撰写,部分 Mono 套件的并且有一个 Reflector 插件 Reflexil 使用 Mono Cecil。
最佳答案
Microsoft.CCI 和 Mono.Cecil 都是低级的,并且不验证生成的程序集。如果生成的代码或汇编结构有任何错误,则需要花费大量时间来查找问题原因。
如果 PostSharp 的功能足以满足您的任务,我建议您使用它。
否则... Mono.Cecil 有更好、更容易理解和易于使用的对象模型。但是,在我的程序中使用它时,我遇到了一个丑陋的错误(对错误方法的引用保存在程序集中;我认为元数据标记处理存在一些错误)
Microsoft.CCI 有一个丑陋的、完全过度设计的对象模型,同时缺乏许多简单的功能;然而,它比 Mono.Cecil 更成熟。最后,我放弃了 Mono.Cecil,并在我的程序中使用了 Microsoft.CCI。
关于.net - Mono Cecil vs. PostSharp Core vs. Microsoft CCI 实现 AOP 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382922/