【发布时间】:2009-09-21 03:03:18
【问题描述】:
我正在使用 .Net Framework 3.5 中的 C# 开发应用程序。在应用程序中,我使用反射从不同的 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;
}
问题:当我从另一个 dll 中的 AApplication 派生类调用此方法 (GetImage) 时,会发生异常:
'System.Security.Permissions.MediaPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'。
System.Security.CodeAccessSecurityEngine.Check(对象需求, StackCrawlMark& stackMark, Boolean isPermSet) zh System.Security.CodeAccessPermission.Demand() zh MS.Internal.PresentationCore.SecurityHelper.DemandMediaPermission(MediaPermissionAudio audioPermissionToDemand, MediaPermissionVideo videoPermissionToDemand, MediaPermissionImage imagePermissionToDemand) zh System.Windows.Media.Imaging.BitmapDecoder.DemandIfImageBlocked() en System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream 流, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache) zh System.Windows.Media.Imaging.BitmapImage.FinalizeCreation() zh System.Windows.Media.Imaging.BitmapImage.EndInit() zh AppsLibrary.AApplication.GetImage(字符串路径)
奇怪的是,该异常只发生在某些计算机上。 有什么想法吗?
【问题讨论】:
标签: c# reflection dll permissions add-in