gpt4 book ai didi

.net - .net 中的代码注入(inject)是什么(作为编程技巧)?

转载 作者:行者123 更新时间:2023-12-01 23:19:35 27 4
gpt4 key购买 nike

当然,在大多数常识中,“它是一种以其作者无意的方式影响程序行为的方法”(wiki)。

那么所有使用反射和类型构建器的技术也可以命名为“代码注入(inject)”,但没有人这样做。

当我一直认为“代码注入(inject)”是关于“运行时”的东西:就像在另一个进程中启动线程以获取一些有趣的数据时,我很惊讶 Reflexil 如何理解这一点:“在‘设计时间’将 C# 指令转换为 IL ',保存编辑过的程序集并用新程序集替换旧程序集”(我错过了 10%)。

现在我对 .NET 中的哪些技术以“代码注入(inject)”术语命名很感兴趣?

顺便说一句。我很想知道:是否有可能在运行时用指向我自己的方法的指针替换非常私有(private)、多次嵌套的系统类的“虚方法表”中的“虚方法指针”。我理解的纯代码注入(inject)。

最佳答案

.NET 中的代码注入(inject)非常困难。主要是因为代码直到最后一刻才存在。它开始执行之前的几分之一秒,由 JIT 编译器生成。

实用的方法是使用 IL 重写,例如在 AOP 中很常见。这发生在离线状态,程序甚至开始执行之前。这不再是真正的“注入(inject)”,您实际上是在磁盘上更改程序。

有一种内联 IL 重写技术,它使用非托管分析器接口(interface)。相当不切实际,一篇记录该方法的杂志文章是 available here .它已经过时了,分析器 API 从那时起发生了很大变化。从未听说过使用此功能的工具。

关于.net - .net 中的代码注入(inject)是什么(作为编程技巧)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com