List<OfAnyObjects> をファイルから 1 行ずつ入力できるユニバーサル関数を作成しようとしています。
using System.IO;
using System.Collections.Generic;
class Program{
public delegate object stringProcessing(string str);
public static void Main(string[] args){
List<string> strList = new List<string>();
stringProcessing strProc = stringPorc;
fileToList("./test.txt", strList, strProc);
}
public static object stringPorc(string str){
return(str + " " + str);
}
public static void fileToList(string path, List<object> lst, stringProcessing SP){
if(File.Exists(path)){
FileStream fs = new FileStream(path, FileMode.Open);
StreamReader sr = new StreamReader(fs);
string cl;
while((cl = sr.ReadLine()) != null) lst.Add(SP(cl));
sr.Close();
fs.Close();
}
else Service.WLLog("Error: File \"" + path + "\" does't seems to exist.");
}
}
エラーが発生します(ロシア語からの翻訳):
Argument "2": type conversion from "System.Collections.Generic.List<string>" to "System.Collections.Generic.List<object>" impossible(CS1503) - C:\...\Program.cs:N,N
そのいずれかを実行しようとしています:
fileToList("./test.txt", strList as List<object>, strProc);
OR
fileToList("./test.txt", (List<object>)strList, strProc);
役に立たないようです。
それを行う方法について何かアイデアはありますか?そして、私の英語で申し訳ありませんが、それは私の母国語ではありません.
ご協力ありがとうございました。正しい(機能する)解決策:
class Program{
//...
public static void Main(string[] args){
//...
fileToList<string>("./test.txt", strList, strProc);
}
//...
public static void fileToList<T>(string path, List<T> lst, stringProcessing SP) where T : class{
//...
lst.Add(SP(cl) as T);
//...
}
}