В обычных собственных библиотеках я могу обернуть другую библиотеку DLL и отслеживать вызовы, просто создавая библиотеку DLL с точно такими же сигнатурами функций в экспорте, а иногда даже вызывая реальную библиотеку DLL.
В управляемом C # у меня есть dll, называемая "A", которая является плагином для другого приложения, у которого есть класс, производный от класса в другой dll, которую я назвал dll "B". Я хочу сделать dll-оболочку для «B», чтобы «A» мог работать с обернутой версией «B» и даже не использовать настоящую версию «B».
B также имеет статические методы и другие классы, я хочу иметь возможность переопределить сигнатуры / объявления в этой квазиоболочке и использовать вместо этого сборку "A".
Плагин DLL A:
using baseDllB;
public class foopluginA : pluginclassB
{
public void methodbaz() { base.doStuff(); pluginclassB.doStaticStuff(); }
}
Base dll B:
namespace baseDllB
{
public class pluginclassB
{
public void doStuff()
{
//Do stuff
}
public static void doStaticStuff() { /*Do more stuff*/ }
}
}
Плагин dll
, очевидно, ссылается на B, поэтому я хочу воссоздать B
, где я могу выполнить ведение журнала и т. Д.
Какие есть способы сделать это?