AppDomainを作成し、新しいドメインでオブジェクトのインスタンスを作成し、ラップされたオブジェクトの現在のAppDomainの名前を返すメソッドを呼び出します。戻り値はメインプログラムドメインの名前であり、新しく作成されたドメイン名ではありません。ところで、コードはVS2010のUnitTestとして実行されています。呼び出し元でクロスAppDomain呼び出しが実行されます。
テストが失敗する理由は何ですか?
[Serializable]
public class DomainHelper
{
public string GetDomainName()
{
return AppDomain.CurrentDomain.FriendlyName;
}
}
[TestClass]
public class DomainTests
{
[TestMethod]
public void RemoteCall()
{
var binDir = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);
const string appDomainName = "TEST";
var x = AppDomain.CreateDomain(appDomainName, null, binDir,null, false);
var remoteType = typeof(DomainHelper);
var remote = (DomainHelper) x.CreateInstanceAndUnwrap(remoteType.Assembly.FullName, remoteType.FullName);
Assert.AreEqual(appDomainName, remote.GetDomainName());
}
}
ありがとうございました。 – Mehran