这就是我打算做的:
- 我想编写一个面向方面的 NLog 特定 onmethodexecutionaspect 类。
- 但我仍然想确保调用代码使用通用属性类进行归因,该属性类将根据应用程序配置文件中指定的内容在内部加载 NLog 或 TraceX 等 methodexecutionaspect 的特定实现。
解决这个问题的最佳方法是什么?
我正在考虑编写一个抽象类,该类将从 postsharp 方法执行方面派生。 然后我将有另一个 dll,它将具有 NLog 特定实现...因此它将有一个类,该类将从我在通用 dll 中创建的通用方法执行方面类派生。
使用的代码将仅引用我编写的通用类 dll,并且如果应用程序配置中指定了该类,则该类将加载我编写的 NLog 特定 dll。
有道理吗?
最佳答案
我认为你走在正确的道路上。 但是,请尝试改用 OnMethodBoundaryAspect。它在运行时比 OnMethodInvocationAspect 更快。
尝试利用编译时初始化 (CompileTimeInitialize) 和运行时初始化 (RunTimeInitialize),并避免在处理程序中执行任何成本高昂的操作。
关于Postsharp 和 NLog,一般设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277568/