我对C#/ .Net文件中的资源非常陌生。
我需要在资源文件(*.RESX
)中存储一个操作数据表,但无法弄清楚如何操作。
如果我在C中硬编码,我会这样做:
struct {
int inputA;
int outputB;
} dataPoint;
dataPoint myOpsData[] = { { 0, 2000},
{10, 4000},
{20, 6300},
{30, 8400},
{40, 10620} };
Visual Studio 2010编辑器中最简单的是使用字符串,但只将字符串映射到值。如果我这样做,我的数据集看起来像:
Name: Value:
----- ------
PerfData1 { 0, 2000}
PerfData2 {10, 4000}
PerfData3 {20, 6300}
PerfData4 {30, 8400}
PerfData5 {40, 10620}
但是这种格式需要大量的解析和相关的验证以及错误处理,这似乎是不必要的。
如何在.RESX资源文件中表示数据点数组(甚至更复杂的数据类型)?
答案 0 :(得分:3)
您不必使用ResX在程序集中嵌入一些静态数据。
使用Visual Studio,您只需添加文件(添加新项或添加现有项),将构建操作(F4或属性窗口)更改为“嵌入式资源”,然后您可以加载它像这样的代码(注意:应该在同一个程序集中以避免安全问题):
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsoleApplication1.MyFile.MyExt"))
{
// load data from stream
}
我想这里的文件是MyFile.MyExt,并且这个文件直接添加到项目根目录,因为VS会自动将当前项目命名空间(此处为ConsoleApplication1)添加到嵌入式资源路径。
如果您不确定此路径,我建议您使用.NET反射器等工具,该工具能够显示组件中的嵌入资源名称和数据。
这将为您提供Stream实例。因此,您可以存储任何类型的数据,只要您可以从/向Stream实例(MemoryStream,StreamReader,DataSet,.NET或Xml序列化对象,位图等)加载/保存它。
答案 1 :(得分:1)
最好使用app.config文件。您可以使用AppSettings部分添加字符串,显然您需要解析(类似于您尝试使用.RESX执行的操作)。但是,app.config文件允许您创建可能更符合您要求的自定义XML部分。使用配置文件的最佳部分是能够更改配置数据,而无需实际重建应用程序。
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=45
http://www.codeproject.com/KB/aspnet/ConfigSections.aspx
另外,请查看以下主题,但不是页面,而是数据点: