一尘不染

如何传递匿名类型作为参数?

c#

如何将匿名类型作为参数传递给其他函数?考虑以下示例:

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)
    {

    }
}

换句话说,我应该使用什么代替?标记。


阅读 828

收藏
2020-05-19

共1个答案

一尘不染

我认为您应该为此匿名类型创建一个类。我认为这将是最明智的选择。但是,如果您真的不想要,可以使用动态:

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

请注意,此类型 不是 强类型,因此,例如,如果Name更改为EmployeeName,则直到运行时您才知道有问题。

2020-05-19