4

我在 Resources.Designer.cs 中添加了一个小函数,它运行良好,问题是当我从 Resources.resx 添加或删除某些内容时,此函数总是被删除,是否有任何指标我可以放置或无论如何绕过这个?

谢谢!


这是用作索引器的非常简单的方法。

internal static string Keys(string key) 
{ 
   return ResourceManager.GetString(key, resourceCulture); 
} 

我这样做是因为你不能做 Properties.Resources 然后连接一个值。扩展可以工作,但是我试过了,它变得很花哨,因为它都是静态方法,你不想实例化。

想法?

4

2 回答 2

5

resx 文件的代码部分由名为 PublicResXFileCodeGenerator(或 InternalResXFileCodeGenerator,取决于您将资源文件可见性设置为)的工具自动生成。它在文件的顶部说:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

如果您真的需要解决这个问题,您需要子类化PublicResXFileCodeGenerator(VS 运行以生成 resx 代码的工具),并实现您自己的工具,Visual Studio 每次想要刷新资源文件时都可以运行该工具。

覆盖该工具将允许您生成部分类,然后您可以将自定义代码存储在另一个 .cs 文件中的某个位置,作为资源文件类的另一个部分类。

老实说,可能有更简单的方法。您正在实施的自定义代码是什么?你能把它变成扩展方法吗?更多细节可能会帮助我们为您指明更好的方向。

于 2010-05-31T20:04:10.390 回答
0

我目前无法验证,但如果自动生成的类是部分类,请在另一个 .cs 文件中创建匹配的部分类并添加任何修改

编辑

确认 resx 的设计器类不是部分的(似乎它应该作为生成的文件?)所以扩展方法可能是最好的。

于 2010-05-31T22:18:30.120 回答