C# 加载图像时发生TypeInitializationException
我想做什么: 我想在WPF中看到一个图像 问题: 当我尝试加载图像时,会出现C# 加载图像时发生TypeInitializationException,c#,wpf,image,C#,Wpf,Image,我想做什么: 我想在WPF中看到一个图像 问题: 当我尝试加载图像时,会出现TypeInitializationException 我试图解决这个问题的方法: 我实现了一个try catch。如果第一个图像(我实际上想要的图像)抛出类型初始化异常,我将看到另一个图像(仅用于测试)。第二个图像(来自catch块)可见,但我要查看的图像不可见。两个图像都具有属性“嵌入式资源”。两个图像都位于相同的命名空间(Travelagency.Resources)中,但位于不同的子目录(菜单和TravelDat
TypeInitializationException
我试图解决这个问题的方法:
我实现了一个try catch
。如果第一个图像
(我实际上想要的图像)抛出类型初始化异常
,我将看到另一个图像
(仅用于测试)。第二个图像
(来自catch
块)可见,但我要查看的图像
不可见。两个图像
都具有属性“嵌入式资源”
。两个图像
都位于相同的命名空间
(Travelagency.Resources
)中,但位于不同的子目录(菜单
和TravelDataFilterMenuIcons
)
C#代码:
TravelDataFilterVM.cs
MenuEntry money = null;
try
{
money = new MenuEntry(Guid.NewGuid(), Travelagency.Ressources.TravelDataFilterMenuIcons.TravelDataFilterMenuIcon.Euro);
}
catch(TypeInitializationException ex)
{
money = new MenuEntry(Guid.NewGuid(), Travelagency.Ressources.Menu.MenuIcon.MenuImage);
}
TravelDataFilterMenuIcon.cs
(不工作)
Menu.cs
(不起作用)
编辑
我发现每个图像
都可以从菜单加载。cs
但是没有图像
可以从TravelDataFilterVM.cs
加载。问题不在于路径或图像的某些内容,而在于类。下面是两个类
:
TravelDataFilterVM.cs
(不工作)
Menu.cs
(不起作用)
现在它工作了!我不知道为什么。我什么也没变。我甚至没有重新启动任何程序。例外情况是。。。?(顺便说一句,我注意到“Resources”这个词在这两种情况下都拼写错误——您的菜单图像真的是“menu.menu5.png”吗?第一个图像会出现类型初始化异常,这就是为什么第二个图像总是被加载的原因。是的,由于对不同的类/图像进行了一些测试,它的拼写错误,是menu5.png。您有不同的路径Travelagency.resources.TravelDataFilterMenuIcons.euro.png
vsTravelagency.resources.Menu.menu5.png
。如果尝试在菜单中加载Travelagency.resources.TravelDataFilterMenuIcons.euro.png
,会发生什么情况?Menu.cs
中的此代码确实有效:public static readonly BitmapImage euro=ImageLoader.LoadImageAsBitmap(“Travelagency.resources.TravelDataFilterMenuIcons.euro.png”);
public static readonly BitmapImage Euro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.euro.png");
public static readonly BitmapImage MenuImage = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.Menu.menu5.png");
using System.Windows.Media.Imaging;
namespace Travelagency.Ressources.TravelDataFilterMenuIcons
{
public class TravelDataFilterMenuIcon
{
private TravelDataFilterMenuIcon() { }
public static readonly BitmapImage Euro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.euro.png");
public static readonly BitmapImage Fuenfzigeuro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.fuenfzigeuro.png");
public static readonly BitmapImage Hunderteuro = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.TravelDataFilterMenuIcons.hunderteuro.png");
}
}
using System.Windows.Media.Imaging;
namespace Travelagency.Ressources.Menu
{
public class MenuIcon
{
private MenuIcon() { }
public static readonly byte[] MENU = ImageLoader.LoadImageAsByteArray("Travelagency.Ressources.Menu.menu5.png");
public static readonly BitmapImage MenuImage = ImageLoader.LoadImageAsBitmap("Travelagency.Ressources.Menu.menu5.png");
}
}