1

多くの方法ではなく、タスクを達成するための 1 つの方法を書きたいと思います。タイプがいくつかのカスタムクラスの1つである可能性のあるリストを渡します。それは可能ですか?「??」で何を求めているかを説明するサンプル 構文がどのように機能するかわからない場所をマークします。ありがとうございました。

private static void MoveSuccessRecords(List<??> thisList, string VUEFileName, string folderArchive, string folderError)
{
    StreamWriter successWriter = new StreamWriter(folderArchive + VUEFileName.Replace(extension, "_COMPLETE" + extension), true);
    CsvWriter successCSV = new CsvWriter(successWriter);

    successCSV.WriteHeader<??>();

    foreach (var item in thisList)
    {
        successCSV.WriteRecord(item);
    }

    successCSV.Dispose();
    successWriter.Dispose();
    successWriter.Close();
}
4

3 に答える 3

3

メソッドをジェネリックにしようとしていると思います。その場合、型引数を受け入れるようにメソッド シグネチャを適応させるだけで済みます。T

static void MoveSuccessRecords<T>(List<T> thisList, string ..)

次に、型引数について明示的に指定するか、指定された引数からジェネリック型引数をコンパイラに推測させるかを選択できます。

var someList = new List<string>();
MoveSuccessRecords<string>(someList);
于 2013-08-14T23:11:25.800 に答える
2

List がジェネリック クラスであるのと同じように、このメソッドをジェネリック メソッドにする必要があります。リストのパラメーターを指定するときに、ジェネリック パラメーターを再利用できます。

private static void MoveSuccessRecords<T>(List<T> thisList, string VUEFileName, string folderArchive, string folderError)
{
    StreamWriter successWriter = new StreamWriter(folderArchive + VUEFileName.Replace(extension, "_COMPLETE" + extension), true);
    CsvWriter successCSV = new CsvWriter(successWriter);

    successCSV.WriteHeader<T>();

    foreach (var item in thisList)
    {
        successCSV.WriteRecord(item);
    }

    successCSV.Dispose();
    successWriter.Dispose();
    successWriter.Close();
}
于 2013-08-14T23:10:37.510 に答える
0

わかりました、すべての詳細を知らなかったり、あまり熟考したりしなくても、私は次のことを行います。

1) List を使用して thisList を定義します 2) item.GetType() を使用して、リスト内のアイテムのタイプを決定します (オブジェクトは類似している可能性がありますが、同じではない可能性があることを示しました)。インターフェースを使えばこれが簡単になりますが、そのコメントに対する反応はありませんでした。次に、適切な項目を WriteRecord メソッドに渡すことができます。

あなたが探している答えが得られることを願っています。

于 2013-08-14T23:16:27.697 に答える