我有默认资源文件(*.resx)编译在其他程序集中(就像默认Properties.Resources
一样),这个程序集由Assembly
对象引用。如何访问其中的特定资源对象?
我试过了:
public static class Resource
{
public static T Get<T>(Assembly assembly, string name)
{
ResourceManager manager = new ResourceManager(assembly.GetName().Name + ".Properties.Resources", assembly);
return (T)manager.GetObject(name);
}
}
这将引发MissingManifestResourceException
,调试器显示通过初始化ResourceManager
实例manager
,manager.ResourceSet
为空。
因此程序集本身不知道默认命名空间。但是,类型知道它们所属的命名空间是什么。试试这个: new System.Resources.ResourceManager(assembly.DefinedTypes.First(x => x.Name == "Resources").FullName, assembly);
当然,理想情况下,您应该进行更多检查以使其万无一失,但这应该使您走上正确的轨道