在c#中使用反射来访问My.Resources
本文关键字:访问 My Resources 反射 | 更新日期: 2023-09-27 18:14:02
我继承了一个用c#和VB混合编写的大型项目。净
该项目涉及许多独立的组件。
有数百(或数千)的资源(png文件)已被插入到使用VB的项目。资源功能,我想从一些c#代码访问,在一个不同的程序集。
微软对此有一篇知识库文章。它包括一些示例代码,但我无法使其工作(并且我不能完全遵循代码)。
// Gets a reference to the same assembly that
// contains the type that is creating the ResourceManager.
System.Reflection.Assembly myAssembly;
myAssembly = this.GetType().Assembly;
// Gets a reference to a different assembly.
System.Reflection.Assembly myOtherAssembly;
myOtherAssembly = System.Reflection.Assembly.Load("ResourceAssembly");
// Creates the ResourceManager.
System.Resources.ResourceManager myManager = new
System.Resources.ResourceManager("ResourceNamespace.myResources", myAssembly);
// Retrieves String and Image resources.
System.String myString;
System.Drawing.Image myImage;
myString = myManager.GetString("StringResource");
myImage = (System.Drawing.Image)myManager.GetObject("ImageResource");
我不能遵循为什么代码创建myAssembly和myOtherAssembly,似乎从来没有使用第二个对象?
加载第二个程序集的动作是否…
myOtherAssembly = System.Reflection.Assembly.Load("ResourceAssembly");
…意思是当我创建一个ResourceManager ?
时,我不需要进一步引用它System.Resources.ResourceManager myManager = new
System.Resources.ResourceManager("ResourceNamespace.myResources", myAssembly);
任何想法如何我可以访问这些资源(有或没有反射)将非常感激!
试试这个示例
http://msdn.microsoft.com/en-us/library/yfsz7ac5.aspx当你说加载myOtherAssembly意味着你以后不必引用它时,你是对的。其实你并不需要声明一个局部变量来实现。
我不知道为什么它不起作用。您确定资源名称空间正确吗?如果您在ResourceManager实例化之后添加了一个断点,那么您可以在调试器中看到其中的任何资源吗?