Voglio sapere se posso indicare in quale appodominio è stato creato un oggetto. Questo è per un test unitario ma anche utili conoscenze generali. Ho i seguenti pezzi di codice (questo è un esempio di codice per illustrazione).È possibile stabilire se un oggetto è in esecuzione in un AppDomain diverso?
public Foo Create()
{
AppDomainSetup appDomainSetup =
new AppDomainSet { ApplicationBase = @"z:\SomePath" }
AppDomain appDomain =
AppDomain.CreateDomain("DomainName", null, appDomainSetup);
return (Foo) appDomain.CreateInstanceAndUnwrap("MyAssembly", "MyClass");
}
Ho poi chiamo
Foo myFoo = Create();
Quello che mi piacerebbe essere in grado di fare è scoprire quale metodo AppDomain su myFoo sarà chiamato in, per verificare che il metodo Create aveva effettivamente creato una nuova AppDomain. Mi rendo conto che posso aggiungere un metodo su come Foo
public class Foo
{
public string appDomainName
{
get { return AppDomain.CurrentDomain.FriendlyName; }
}
}
Questo mi avrebbe fornito il dominio di applicazione che Foo è in esecuzione in. Non credo che questa è una soluzione elegante solo per un test di unità. Sarebbe bello se qualcuno potesse aiutare a definire un metodo come.
public string GetAppDomainNameWithDotNetWitchcraft(Foo myFoo)
{
// Insert voodoo here.
}
EDIT: Grazie per le risposte e commenti. La domanda che ho posto è stata esaudita e i commenti mi hanno aiutato a capire dove stavo sbagliando. Quello che stavo davvero cercando di ottenere è testare che sia stato creato un nuovo AppDomain.
Interessante. Non ci ho pensato. –
Non mi dispiace un po 'di speleologia. È utile Anche se l'ho visto in un test unitario ha un odore di design :) – btlog
@btlog - Sono curioso di sapere come capire se un oggetto si trova in un AppDomain diverso è un odore di design, ma scrivere un test unitario per assicurarsi che non sia (se capisci il mio significato)? –