Я разрабатываю приложение с использованием C # в .Net Framework 3.5. В приложении я создаю несколько объектов из разных dll (также разработанных в C #), используя отражение. Все эти объекты расширяют абстрактный класс (AApplication):
private AApplication BuildApplication(string path)
{
Assembly appAssembly = Assembly.LoadFrom(path);
Type[] typeArray = appAssembly.GetTypes();
foreach (Type t in typeArray)
{
if (typeof(AApplication).IsAssignableFrom(t))
{
ConstructorInfo ci = t.GetConstructor(new Type[0]);
AApplication app = ci.Invoke(null) as AApplication;
return app;
}
}
return null;
}
Абстрактный класс AApplication находится в другой библиотеке (названной AppsLibrary), в которой также есть изображения в качестве ресурсов. Этот класс имеет простой метод для загрузки изображения:
protected BitmapImage GetImage(string path)
{
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.CreateOptions = BitmapCreateOptions.None;
bmp.EndInit();
return bmp;
}
Проблема : когда я вызываю этот метод (GetImage) из класса, производного от AApplication, который находится в другой DLL, возникает исключение:
'System.Security.Permissions.MediaPermission, WindowsBase, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.
System.Security.CodeAccessSecurityEngine.Check (Требование объекта, StackCrawlMark & stackMark, логическое значение isPermSet)
en System.Security.CodeAccessPermission.Demand ()
ru MS.Internal.PresentationCore.SecurityHelper.DemandMediaPermission (MediaPermissionAudio audioPermissionToDemand, MediaPermissionVideo videoPermissionToDemand, MediaPermissionImage imagePermissionToDemand)
ru System.Windows.Media.Imaging.BitmapDecoder.DemandIfImageBlocked ()
ru System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream (Uri baseUri, Uri uri, Потоковый поток, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, логическая вставкаInInDecoderCache)
en System.Windows.Media.Imaging.BitmapImage.FinalizeCreation ()
en System.Windows.Media.Imaging.BitmapImage.EndInit ()
en AppsLibrary.AApplication.GetImage (String path)
Странно то, что исключение возникает только на некоторых компьютерах.
Есть идеи?