Come funziona i metodi statici di "isolatore di Typemock"?
-
13-09-2020 - |
Domanda
Come alcuni di voi lo sapranno, generalmente non è possibile prendere in giro un metodo statico in .NET.
Dando beffardo, intendo sostituire un metodo in una classe con un altro metodo con la stessa firma, di solito a scopo di test.
I due metodi principali utilizzati per prendere in giro un metodo devono dichiararlo virtuale o definirlo in un'interfaccia.Nessuno di questi due è consentito per i metodi statici .NET.
Tuttavia, c'è uno strumento costoso chiamato "Isolatore Typemock" che consente di prendere in giro i metodi statici.Come funziona l'isolatore questa impresa apparentemente impossibile?
Soluzione
è in FAQ .
Fondamentalmente, un falso di typemock istanzia un nuovo oggetto del tipo e dei ganci originali in ogni metodo e chiamata di proprietà per quell'oggetto, reindirizzando la chiamata al falso e restituendo i valori specificati.Usa un profondo Voodoo nel .NET Framework (The .NET Profiler API , se sei interessato) per farlo, ma è tutto "legittimo".Tecnicamente chiunque può costruire un duplicato di typemock, ma devo ancora vederne uno.