100%信頼できるわけではありませんが、別のオプションは、コールスタックでCAS拒否トークンに依存することです。
おそらく、ロードされたクラスの最初の初期メソッドは、ユーザーの制御下にあるコードによって呼び出されます。次に、セキュリティの拒否アクションを使用して、メソッドが.NETFrameworkの特定の部分にアクセスするのを防ぐことができます。
コードはこれらの線に沿ったものになります:
[SecurityPermission(SecurityAction.Deny, Flags = SecurityPermissionFlag.NoFlags ^ SecurityPermissionFlag.Assertion)]
void CallExternalAssemblyClass(ExternalClass c)
{
c.SomeMethod();
}
提案されたソリューションにはいくつかの注意点があります。Silverlightを使用していないことを前提としており、アセンブリが特別に細工されたCILアセンブリを使用して作成された場合、潜在的なセキュリティリスクがあります。
得られる利点は、個別のAppDomainの使用と、複数のAppDomainに関連するマーシャリングの問題を回避できることです。