Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何读取不同程序集中的embedded.resx_C#_Dll_Embedded Resource_Resx_Resourcemanager - Fatal编程技术网

C# 如何读取不同程序集中的embedded.resx

C# 如何读取不同程序集中的embedded.resx,c#,dll,embedded-resource,resx,resourcemanager,C#,Dll,Embedded Resource,Resx,Resourcemanager,我的项目中有一些DLL,它们只包含许多作为嵌入式资源的.resx文件。在每个项目中,.resx文件都放在不同的文件夹中。all的属性“Custom Tool Name Space”设置为每个项目的命名空间。 当我尝试使用ResourceManager获取字符串时,我得到一个错误,例如“MyTemplate.resources”找不到,但我在dll中只有“MyTemplate.resx” 如何访问我的资源 new ResourceManager(typeof(MyTemplate.resx)).G

我的项目中有一些DLL,它们只包含许多作为嵌入式资源的.resx文件。在每个项目中,.resx文件都放在不同的文件夹中。all的属性“Custom Tool Name Space”设置为每个项目的命名空间。 当我尝试使用
ResourceManager
获取字符串时,我得到一个错误,例如“MyTemplate.resources”找不到,但我在dll中只有“MyTemplate.resx”

如何访问我的资源

new ResourceManager(typeof(MyTemplate.resx)).GetString("FirstNameTooltip");

正如我在下面的评论中所说,资源是动态变化的。我无法直接访问它的属性。

我通常是这样做的:

string mystring = YourResourceNamespace.MyTemplate.FirstNameTooltip;
如果您不知道napespace,请单击.resx并双击Designer.cs,然后检查名称空间,所有关键字都使用gettor定义为简单静态变量,因此只需调用这些关键字即可

如果ressource位于另一个项目中,则只需将其包含到您的项目中,以便从您的项目中访问它们


我希望这有帮助

您需要先加载程序集:

Assembly ressourceAssembly = Assembly.Load("ResourceAssembly");
(这可能会有几个问题。请详细阅读动态程序集加载。)

然后创建资源管理器:

ResourceManager myManager = new 
   ResourceManager("<default namespace>.<Resx-Folder>.<Resx-File>", ressourceAssembly);

您看到这个问题了吗:?您可能应该向我们展示一些代码,我们可以看到您尝试了什么。谢谢。但我说我在bin文件夹的其他dll中有我的.resx,而不是主项目的属性。好吧,我想我知道你在哪里被卡住了。我添加了一个答案,并改进了问题的标题,以便更好地表达问题。(我希望我没弄错。)谢谢。我的问题是.resx文件类被动态更改。我不知道现在需要哪门课。资源的类型和资源的键值在变量中更改。我用它来实现IDataErrorInfo DataAnnotation验证。如果您不知道类的名称空间,我没有任何解决方案。也许在DB中存储资源会有帮助?我可以获得名称空间。我有类的信息,我知道(类)的类型,但它在变量中是动态的。如何获取实例?我有一个ValidationAttribute属性。包含ErrorMessageresourceName&ErrorMessageResourceType&ErrorMessage的。我需要ErrorMessageResourceType的资源类型中的ErrorMessageresourceName的值。事实上,您只想使用不同语言的错误消息进行UI验证?谢谢您的时间。但正如我所说,ValidationAttribute类具有程序集。问题是ResourceManager试图定位带有.resources扩展名的资源文件,我需要使用.resx扩展名。另一点是,资源文件不在dll项目的根目录中,而是按主题放在文件夹中。
myManager.GetString("FirstNameTooltip");