Другим вариантом, но не на 100% надежным, было бы полагаться на то, что CAS отказывает токенам в стеке вызовов.
Предположительно, первый начальный метод в загруженном классе будет вызываться кодом, находящимся под вашим контролем, затем вы можете использовать действие безопасности Deny, чтобы предотвратить доступ метода к определенным частям .NET Framework.
код будет выглядеть примерно так:
[SecurityPermission(SecurityAction.Deny, Flags = SecurityPermissionFlag.NoFlags ^ SecurityPermissionFlag.Assertion)]
void CallExternalAssemblyClass(ExternalClass c)
{
c.SomeMethod();
}
Предлагаемое решение имеет несколько предостережений, оно предполагает, что вы не используете Silverlight, и существует потенциальная угроза безопасности, если сборка была написана с использованием специально созданной сборки CIL.
Полученное преимущество состоит в том, что вы можете избежать использования отдельных доменов приложений и проблем с распределением, связанных с несколькими доменами приложений.