什么是IL编织?

2024-01-06

我刚看到阿延德的帖子 http://ayende.com/Blog/archive/2008/10/09/first-steps-with-post-sharp.aspx今天关于 PostSharp。我下载了代码并尝试了一下,我认为这是我见过的处理 AOP 的最酷、最容易使用的方法。

Ayende 在他的文章中表示,PostSharp 通过以下方式实现了它的魔力:伊尔织造。现在,在某种抽象层面上,我可以推断出这意味着什么,但我想看看是否有更详细的答案。不幸的是,很长一段时间以来,谷歌第一次对我来说一无所获。所以我认为这对 StackOverflow 来说是一个很好的问题(因为我已经订阅 Jeff 的博客好几年了,并且知道这个网站正在做它的事情)。

那么 IL Weaving 到底是什么以及它是如何实现的呢?


编织是指将功能注入现有程序的过程。从概念上讲,这可以在多个层面上完成:

  • 源代码编织会在代码编译之前注入源代码行
  • IL 编织(适用于 .NET)将代码作为 IL 指令添加到程序集中
  • 字节码编织(针对 Java)适用于类文件,请参阅这些注释AspectJ http://www.eclipse.org/aspectj/doc/released/devguide/bytecode-concepts.html

理论上,您可以更深入地编写一个编译为本机指令的可执行文件,但这会增加很多复杂性,而且我不知道有什么可以做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是IL编织? 的相关文章

  • 如何动态创建 Dapper 查询的参数

    我有一个值字典 例如 Name Alex 有没有办法将其作为查询参数传递给 Dapper 这是一个显示我想要做什么的示例 IDictionary
  • XNA 窗口调整大小调用 LoadContent

    每当我将 XNA 窗口大小调整到尽可能小的分辨率 0 像素高 时 程序都会再次开始调用 LoadContent 这会导致我的应用程序崩溃 因为我只希望它加载内容一次 我能做什么 有没有办法阻止用户过度调整窗口大小 例如 Java 中的 se
  • .Net Standard项目,如何使用System.ServiceModel类

    我已将 PCL 项目转换为 Net Standard 1 5 项目 我已经从 nuget 安装了 System ServiceModel 包 但找不到使用 System ServiceModel 命名空间的方法 任何帮助表示赞赏 安装 Sy
  • 为什么在第一次调用类方法之前不调用静态构造函数

    根据乔恩 斯基特的文章C 和 beforefieldinit http csharpindepth com Articles General Beforefieldinit aspx和讨论C 中何时调用静态构造函数 https stacko
  • 在nodejs中解密.Net cookie

    我在 Net 中创建了一个加密的cookie 并尝试在nodejs 中解密它的内容 但是nodejs不断抛出异常 TypeError DecipherFinal失败 在 Net中 我使用带有密钥的AES加密方法 932D86BB1448EE
  • 为什么.NET Framework 4.0安装程序的大小小于3.0/3.5?

    我看到 Net Framework 4 0的beta2安装程序只有55MB 而 Net 3 5的安装程序有200 MB 这是怎么回事 NET 3 5 之所以这么大 是因为它在同一个包中包含 x64 版本的框架 2 0 3 0 软件包针对 x
  • 在线找到具有两个不同参数的多个匹配绑定

    我在同一个功能文件中写了两行 何时 When user action1 key1 with value1 for atttributeType Value in Filename1 SectionId1 Then abc When user
  • 键入时自动滚动 DataGridView

    我遇到这个问题 DataGridView 中的最后一列太长 您需要使用滚动条来显示该列的其余部分 但是当我输入文本时 它不会在输入时自动滚动 我想要的是 我想在打字时自动滚动滚动条 以便用户在打字时不必使用滚动条 这是图像 As you c
  • 为什么在此单元测试中,BackgroundWorker 没有在正确的线程上调用 RunWorkerCompleted?

    backgroundWorker 的全部目的是在执行耗时的任务后更新 UI 组件正如广告所宣传的那样在我的 WPF 应用程序中 但是在我的测试中 回调不会在调用线程上调用 Test public void TestCallbackIsInv
  • 如果将其名称作为参数传递,如何在方法中打开表单

    我正在尝试创建一个标准方法来根据传递给它的参数打开表单 基本上 要完成此任务 using Quotes newQte new Quotes newQte ShowDialog 通过替换 Quotes with a passed parame
  • 寻找自定义 SynchronizationContext 的示例(单元测试所需)

    我需要定制同步上下文 http msdn microsoft com en us library system threading synchronizationcontext aspx that 拥有一个运行 Posts 和 Sends
  • List 与 IEnumerable 的协变和逆变

    所以 假设我有 Public Interface ISomeInterface End Interface Public Class SomeClass Implements ISomeInterface End Class 如果我有MyL
  • 最新的反应式扩展 (Rx) 教程

    我对反应式扩展非常感兴趣 但我找不到最新的教程 我开始于使用 NET 响应式扩展消除异步忧郁症 http go microsoft com fwlink LinkId 208528但它已经过时了 我可以找出一些改变 但我无法让很多例子发挥作
  • 该变量未声明或从未分配警告

    这是基类 public class BaseClass UserControl protected ListView list protected TreeView tree public BaseClass 儿童班 public part
  • 以线程安全的方式获取随机数

    这是一篇描述随机数线程安全性的好文章 以线程安全的方式获取随机数 http blogs msdn com b pfxteam archive 2009 02 19 9434171 aspx 但我坚持使用 RandomGen2 示例 publ
  • 如何在不下载内容的情况下执行 GET 请求?

    我正在开发一个链接检查器 一般来说我可以执行HEAD请求 但是有些网站似乎禁用了这个动词 所以在失败时我还需要执行GET请求 仔细检查链接是否确实已失效 我使用以下代码作为我的链接测试器 public class ValidateResul
  • 数组与列表的性能

    假设您需要一个需要频繁迭代的整数列表 数组 我的意思是非常频繁 原因可能有所不同 但可以说它位于大容量处理的最内层循环的核心 一般来说 人们会选择使用列表 List 因为它们的大小具有灵活性 最重要的是 msdn 文档声称列表在内部使用数组
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 检测 SignalR Hub 客户端立即断开连接

    SignalR Hub OnDisconnected 何时在服务器端引发 对于崩溃或关闭而不调用Stop method 我正在使用 SignalR NET 客户端进行测试 而不是 javascript 客户端 如果我打电话给Stop客户端上
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D

随机推荐