2

我有一个List<string>我想通过设置为项目资源的文本文件填充的内容。我已经到处寻找一种方法来做到这一点,但还没有找到一种不会导致我的程序崩溃的方法。

如果我手动填充列表...

_names.Add("Sam");
_names.Add("John");
_names.Add("Mike");

...一切正常。我的文本文件的每个名称都在单独的行上,没有逗号或任何东西。当我尝试读取名称时,无论我采取哪条路线,程序都会崩溃。这是我尝试过的最新方法,尽管还有很多其他方法:

using (var reader = new StreamReader(Properties.Resources.sampleNamesMale))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        _names.Add(line);
    }
}

此外,我无法隔离崩溃的原因,因为每次发生崩溃时,错误只是提到 ViewModelLocator,这与此问题完全无关。

有人对如何解决这个问题有任何想法吗?我当然会很感激任何建议。

更新: Try-catch 不会产生任何结果。这是我得到的错误:

发生 XamlParseException -“对与指定绑定约束匹配的“AoW.ViewModels.ViewModelLocator”类型的构造函数的调用引发了异常。行号“13”和行位置“10”。

它指向我的主窗口构造函数中的 InitializeComponent()。

更新 2:真正的例外是:

“发生 ArgumentException - 路径中有非法字符。” 它指向 using (var reader.... 行。

4

3 回答 3

5

使用 StringReader 而不是 StreamReader:

using (var reader = new StringReader(Properties.Resources.sampleNamesMale))

您收到该错误是因为 StreamReader(string) 需要一个文件路径。如果您在 Properties.Resources.sampleNamesMale 中提供实际文本,则必须使用 StringReader。

于 2013-06-11T05:02:13.170 回答
1

你可以得到例外的唯一方法:

发生 ArgumentException - 路径中有非法字符。

是如果返回的路径Properties.Resources.sampleNamesMale实际上是无效的:

using (var reader = new StreamReader(Properties.Resources.sampleNamesMale))
于 2013-06-11T04:21:16.800 回答
1

第二次更新后,答案很简单:在调试器中显示文件的路径并使其正确。可能它最后包含空格或没有转义\

于 2013-06-11T04:22:14.297 回答