有一种方法可以声明一个带有匿名类型集合作为参数的方法吗?
例如像这样的伪语法:
private void dosomething ( List<class with { string Name, string Lastname, int Age }> persons) {
...
}
避免创建单次使用类。
更新 我想要的是避免定义一个我将仅用于将数据传递给此方法的类。
有一种方法可以声明一个带有匿名类型集合作为参数的方法吗?
例如像这样的伪语法:
private void dosomething ( List<class with { string Name, string Lastname, int Age }> persons) {
...
}
避免创建单次使用类。
更新 我想要的是避免定义一个我将仅用于将数据传递给此方法的类。
更新
你的问题有点令人困惑。
根据您问题的第一部分,我认为您需要一个通用方法。
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) {
...
}
您应该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,直到运行时您才会知道存在问题。
您可以使用动态关键字来执行此操作,尽管您会丢失强类型属性。
private void doSomething (List<dynamic> persons)
{
var name = persons.FirstOrDefault().Name;
}