如何以编程方式将代码插入到程序集中

时间:2011-12-21 10:33:43

标签: c# .net

所以,我在c#上有一个.net程序集。我有两个:例如,二进制和源没有记录器。 我需要的是插入将初始化特定记录器的属性。然后我需要在所有方法中引入记录器调用程序。第一种方法 - 手动写属性及其调用。第二种方法是编写另一个类\方法(我想在同一个程序集中),它将自动执行。

有可能吗?有什么建议吗?

我认为这是可能的,因为这是面试中的一个问题。但是没有证据证明这是可能的,他们想听到“不,手动这样做”。

2 个答案:

答案 0 :(得分:2)

这就是我们所说的建筑术语中的“交叉关注”。记录是跨越应用程序的许多方面的东西。

Microsoft企业库中有一些功能可以处理它。您想要的部分是Policy Injection库。然后,您可以在配置中指定要匹配的方法(基于方法名称/结构)和要调用的函数。通过这种方式,您可以将日志记录作为应用程序的正确交叉关注点,而不是必须手动编码到每个方法中的内容。

答案 1 :(得分:0)

在不更改源代码和重新编译的情况下,无法更改方法的执行。您可以编写一个包装类,它将公开所有将首先调用您的记录器然后调用方法的类和方法,但这不是他们所要求的。

所以他们的问题的答案是1.是可能的,2是不可能的,如果你必须添加日志支持,你需要手动将它添加到每个方法。