Jak mogę zwrócić anonimowy typ, który zależy od parametru field, w którym wymieniono właściwości, które należy uwzględnić w typie anonimowym? Zadanie ma ponad 20 właściwości, a klienci chcą otrzymywać różne kombinacje właściwości.Jak zwrócić niestandardowy anonimowy typ?
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 });
}
}
anonimowych typy są znane w rodzaju kompilacji. Chcesz budować typy dynamicznie w środowisku wykonawczym. To zupełnie co innego. Oznacza to również, że konsumenci 'GetAllTasks' muszą radzić sobie z typami dynamicznymi. Poza tym nie zaleca się zwracania anonimowych typów. –
Zdefiniowałeś zadanie klasy, dlaczego nie używasz go zamiast anonimowego? –
Możesz użyć odbicia, aby spróbować ustawić wartość wszystkich pól przekazanych w obiekcie zadania. – glosrob