Ok, quindi mi sono imbattuto nel seguente problema che ha sollevato un sopracciglio.Assembly.GetCallingAssembly() e costruttori statici?
Per vari motivi, ho una configurazione di test in cui le classi di test in un TestingAssembly.dll dipendono dalla classe TestingBase in un BaseTestingAssembly.dll. Una delle cose che il TestBase fa, nel frattempo, è cercare una certa risorsa incorporata nella propria e l'assemblea chiamata
Quindi il mio BaseTestingAssembly conteneva le seguenti righe ...
public class TestBase {
private static Assembly _assembly;
private static Assembly _calling_assembly;
static TestBase() {
_assembly = Assembly.GetExecutingAssembly();
_calling_assembly = Assembly.GetCallingAssembly();
}
}
Statico da quando ho capito , questi assemblaggi sarebbero uguali per tutta la durata dell'applicazione, quindi perché preoccuparsi di ricalcolarli su ogni singolo test.
Durante l'esecuzione, tuttavia, ho notato che sia _assembly che _calling_assembly erano impostati su BaseTestingAssembly, rispettivamente su BaseTestingAssembly e TestingAssembly.
L'impostazione delle variabili su non statico e il loro inizializzazione in un costruttore regolare ha risolto questo problema, ma sono confuso sul motivo per cui ciò è accaduto all'inizio. Ho pensato che i costruttori statici funzionassero la prima volta che un membro statico viene referenziato. Questo potrebbe essere stato solo dal mio TestingAssembly che avrebbe dovuto essere il chiamante. Qualcuno sa cosa potrebbe essere successo?
così perché è l'assemblea chiamata non nulla, allora? –
Sarebbe più utile? :) –
No, sembra proprio che avrebbe senso comunque –