0

有一种方法可以声明一个带有匿名类型集合作为参数的方法吗?

例如像这样的伪语法:

private void dosomething ( List<class with { string Name, string Lastname, int Age }> persons) {
... 
}

避免创建单次使用类。

更新 我想要的是避免定义一个我将仅用于将数据传递给此方法的类。

4

3 回答 3

2

更新

你的问题有点令人困惑。

根据您问题的第一部分,我认为您需要一个通用方法。

private void dosomething<T>(List<T> items) {
... 
}

但是在查看了您编写的代码之后,您只需要一个界面IPerson

public interface IPerson
{
   Name { get; set; }
   LastName { get; set; }
   Age { get; set; }
}

private void dosomething(List<IPerson> persons) {
    ... 
}
于 2012-11-14T08:37:12.600 回答
1

您应该make a class使用此匿名类型,因为无法在单个方法范围之外以强方式传递匿名类型,因为在方法范围之外无法表示它。但如果你真的不想,你可以使用动态:

public void DoSomething (IEnumerable<dynamic> list)
{
    foreach (dynamic item in list)
    {
        string name = item.Name;
        string lastName = item.LastName;
        int age = item.Age;
    }
}

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

于 2012-11-14T08:37:34.877 回答
0

您可以使用动态关键字来执行此操作,尽管您会丢失强类型属性。

private void doSomething (List<dynamic> persons)
{
var name = persons.FirstOrDefault().Name;
}
于 2012-11-14T08:38:35.473 回答