如何从其他程序集访问默认资源



我有默认资源文件(*.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实例managermanager.ResourceSet为空。

因此程序集本身不知道默认命名空间。但是,类型知道它们所属的命名空间是什么。试试这个: new System.Resources.ResourceManager(assembly.DefinedTypes.First(x => x.Name == "Resources").FullName, assembly);当然,理想情况下,您应该进行更多检查以使其万无一失,但这应该使您走上正确的轨道

最新更新