Да, может. Чтобы CAS позволил вам сделать это, вы должны включить
[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()]
атрибут в сборке COM и загруженных сборках.
Кроме того, создание объектов и выполнение сборок потребует добавления правильного набора разрешений в новый домен приложения, например:
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = Path.GetDirectoryName(path);
PermissionSet trustPermissionSet = new PermissionSet(PermissionState.Unrestricted);
AppDomain newDomain = AppDomain.CreateDomain( "descriptive name", null, setup, trustPermissionSet);
Тогда вы можете просто создать объект через CreateInstanceFromAndUnwrap()
или executeAssembly
.
Существует также способ обойти эту проблему - использовать Activator
:
System.Runtime.Remoting.ObjectHandle objHandle = Activator.CreateInstanceFrom(_pluginStore[path], path, pluginClass);
if (objHandle != null)
{
object unwrappedInstance = objHandle.Unwrap();
result.Add(unwrappedInstance);
}
но после его выполнения код не имеет права делать какие-либо "сложные вещи".
Вы можете узнать больше здесь .