【发布时间】:2011-08-03 21:32:54
【问题描述】:
在普通的原生库中,我可以包装另一个 dll 并通过在导出中构建一个具有完全相同的函数签名的 dll 来监视调用,有时甚至可以调用真正的 dll。
在托管 C# 中,我有一个名为“A”的 dll,它是另一个应用程序的插件,该应用程序有一个派生自另一个 dll 中的类的类,我称之为 dll“B”。我想为“B”制作一个包装 dll,因此“A”可以使用“B”的包装版本,甚至可能根本不使用“B”的真实版本。
B 也有静态方法和其他类,我希望能够在这个准包装器中重新定义签名/声明,并让“A”程序集使用它。
插件 dll A:
using baseDllB;
public class foopluginA : pluginclassB
{
public void methodbaz() { base.doStuff(); pluginclassB.doStaticStuff(); }
}
基础 dll B:
namespace baseDllB
{
public class pluginclassB
{
public void doStuff()
{
//Do stuff
}
public static void doStaticStuff() { /*Do more stuff*/ }
}
}
dlls 插件显然引用了 B,所以我想做的是重新创建 B,我可以在其中执行日志记录等。
有什么方法可以做到这一点?
【问题讨论】:
-
编程到接口而不是实现...en.wikipedia.org/wiki/Design_Patterns