如何返回一个匿名类型,该类型取决于必须包含在匿名类型中的属性所在的fields参数?任务实体拥有超过20个属性,并且客户希望接收不同的属性组合。如何返回自定义匿名类型?
public class Test
{
public class Task
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
//... more 20 properties
}
public List<Task> Tasks = new List<Task>();
public Test()
{
Tasks.Add(new Task { Id = 1, Name = "Task #1", Description = "Description task #1" });
Tasks.Add(new Task { Id = 2, Name = "Task #2", Description = "Description task #2" });
Tasks.Add(new Task { Id = 3, Name = "Task #3", Description = "Description task #3" });
}
public IEnumerable<object> GetAllTasks(string fields)
{
//if fields == 'Id,Name' then return anonymous type new { Id = t.Id, Name = t.Name }
return Tasks.Select(t => new { Id = t.Id, Name = t.Name });
//if fields == 'Id,Name,Description' then return anonymous type new { Id = t.Id, name = t.Name, Description = t.Description }
return Tasks.Select(t => new { Id = t.Id, Name = t.Name, Description = t.Description });
}
}
匿名类型是在编译类型是已知的。你想在运行时动态构建类型。这是完全不同的。这也意味着'GetAllTasks'的消费者必须能够处理动态类型。除此之外,不建议返回匿名类型。 – 2013-02-19 08:52:17
您已经定义了类Task,为什么不使用它而不是匿名类型? – 2013-02-19 08:52:52
您可以使用反射尝试设置任务对象中传递的所有字段的值 – glosrob 2013-02-19 08:53:08