动态加载资源文件

RSM*_*RSM 5 c# wpf resources

我想动态加载一个资源文件。

如果我静态地做,它显然运作良好:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources._88);
player.Play();
Run Code Online (Sandbox Code Playgroud)

这将加载并播放资源 _88。

但是,我希望这是动态的,

我有一个变量“num”,它可以是 1-90 之间的任何数字,我想加载与该数字相关的资源。

所以我创建了另一个名为“soundURL”的变量,它看起来像:

var soundURL = "_" + num;
Run Code Online (Sandbox Code Playgroud)

但是当我将它与前一个一起使用时,它显然不起作用:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.soundURL);
Run Code Online (Sandbox Code Playgroud)

我怎样才能克服这个问题?

小智 5

您可以使用 ResourceManager 按名称加载资源

object O = Properties.Resources.ResourceManager.GetObject("_88");
Run Code Online (Sandbox Code Playgroud)

然后你只需要把它作为一个流..

var s = (Stream)O;
System.Media.SoundPlayer player = new System.Media.SoundPlayer(s);
player.Play();
Run Code Online (Sandbox Code Playgroud)