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

1

2 回目の更新後、答えは非常に簡単です。デバッガーでファイルへのパスを表示し、それを修正します。おそらく最後にスペースが含まれているか、エスケープされていません\

于 2013-06-11T04:22:14.297 に答える
1

例外を取得できる唯一の方法:

ArgumentException が発生しました - パスに無効な文字があります。

によって返されたパスProperties.Resources.sampleNamesMaleが文字通り無効であった場合は次のようになります。

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