2

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);
        //...
    }
}
4

4 に答える 4