我想要通过设置为项目资源的文本文件填充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 - 路径中的非法字符。”它指向使用(var reader .... line。
答案 0 :(得分:5)
使用StringReader而不是StreamReader:
using (var reader = new StringReader(Properties.Resources.sampleNamesMale))
您收到该错误,因为StreamReader(字符串)需要文件路径。如果要在Properties.Resources.sampleNamesMale中提供实际文本,则必须使用StringReader。
答案 1 :(得分:1)
获得例外的唯一方法是:
发生ArgumentException - 路径中的字符非法。
如果Properties.Resources.sampleNamesMale
返回的路径确实无效:
using (var reader = new StreamReader(Properties.Resources.sampleNamesMale))
答案 2 :(得分:1)
第二次更新后答案很简单:在调试器中显示文件的路径是什么并使其正确。可能它最后包含空格或未转义\