替换系统命名空间中的类

Cod*_*ous 14 .net

我目前正在努力破解我的.NET操作系统在MS.NET/Mono之前运行(之前它只运行裸机),我遇到了一个小障碍.我需要实现我自己的System.Console,它与我的服务基础架构对话,我找不到一个好的方法来替换它,而不是1)没有链接到mscorlib(会很好地做),或者2)使用NotQuiteSystem替换的命名空间,会破坏兼容性.

有没有一种机制可以干净地替换System类而无需执行其中一项操作?

编辑:一个想法是使用Mono.Cecil重写对System.Console的引用到Renraku.System.Console或其他一些,但我更愿意在框架内工作,如果可能的话.

Gab*_*ams 4

您应该查看免费工具PostSharp。它允许您在设计时通过自动修改 MSIL 来更改现有的 .Net 程序集。

\n

有关 PostSharp 中编译时编织的更多信息,请参阅此页面。以及此页面有关加载时编织的信息(在运行时将程序集加载到内存之前发生)。

\n

对于运行时编织(在运行时修改现有方法),请查看LinFu

\n
\n

[除页面外]

\n

...您可以使用 LinFu.AOP 动态拦截任何类型的任何方法,无论该方法是否被声明为虚拟或非虚拟。除了在该类型上声明的任何静态方法之外,您\xe2\x80\x99还能够动态拦截(甚至替换)在密封类型上声明的方法。

\n

[/页面除外]

\n
\n