Ich möchte wissen, ob ich sagen kann, welche appdomain ein Objekt erstellt wurde. Dies ist für einen Komponententest aber auch nützliches allgemeines Wissen. Ich habe die folgenden Teile des Codes (das ist Beispielcode für die Illustration).Kann festgestellt werden, ob ein Objekt in einer anderen AppDomain ausgeführt wird?
public Foo Create()
{
AppDomainSetup appDomainSetup =
new AppDomainSet { ApplicationBase = @"z:\SomePath" }
AppDomain appDomain =
AppDomain.CreateDomain("DomainName", null, appDomainSetup);
return (Foo) appDomain.CreateInstanceAndUnwrap("MyAssembly", "MyClass");
}
Ich nenne dann
Foo myFoo = Create();
Was würde ich zu tun, um der Lage sein mag, ist, herauszufinden, was AppDomain Methode auf myFoo in aufgerufen wird, zu testen, ob die Methode Create geschaffen hatte tatsächlich eine neue Anwendungsdomäne Ich weiß, dass ich eine Methode auf Foo wie
public class Foo
{
public string appDomainName
{
get { return AppDomain.CurrentDomain.FriendlyName; }
}
}
hinzufügen
Das würde mir die Appdomain vor, dass Foo in laufen. Ich glaube nicht, das eine elegante Lösung ist nur für einen Komponententest. Es wäre großartig, wenn jemand helfen könnte, eine Methode zu definieren.
public string GetAppDomainNameWithDotNetWitchcraft(Foo myFoo)
{
// Insert voodoo here.
}
EDIT: Danke für die Antworten und Kommentare. Die Frage, die ich gestellt habe, wurde beantwortet und die Kommentare haben mir geholfen, zu erkennen, wo ich falsch liege. Was ich wirklich erreichen wollte, ist zu testen, dass eine neue AppDomain erstellt wird.
Interessant. Daran habe ich nicht gedacht. –
Ich habe nichts gegen ein bisschen Höhlenforschung. Das ist nützlich. Obwohl, wenn ich sah, dass in einem Unit-Test hat es einen Design-Geruch :) – btlog
@btlog - Ich bin neugierig, wie ergründen, ob ein Objekt in einer anderen AppDomain ist ein Design-Geruch, aber einen Unit-Test schreiben, um sicherzustellen, dass es Isn ist 't (wenn Sie meine Bedeutung bekommen)? –