匿名型をパラメータとして渡すにはどうすればいいですか? 質問する

匿名型をパラメータとして渡すにはどうすればいいですか? 質問する

匿名型を他の関数にパラメータとして渡すにはどうすればよいですか? 次の例を検討してください。

var query = from employee in employees select new { Name = employee.Name, Id = employee.Id };
LogEmployees(query);

ここの変数にqueryは強い型がありません。LogEmployeesこれを受け入れるには関数をどのように定義すればよいでしょうか?

public void LogEmployees (? list)
{
    foreach (? item in list)
    {

    }
}

つまり、?マークの代わりに何を使用すればよいのでしょうか。

ベストアンサー1

この匿名型用のクラスを作るべきだと思います。私の意見では、それが最も賢明なやり方です。しかし、本当にやりたくない場合は、dynamics を使うこともできます。

public void LogEmployees (IEnumerable<dynamic> list)
{
    foreach (dynamic item in list)
    {
        string name = item.Name;
        int id = item.Id;
    }
}

これはない強く型付けされているため、たとえば Name が EmployeeName に変更された場合でも、実行時まで問題があることはわかりません。

おすすめ記事