Array Indexing Properties of A Class
- by Chris
I have a class that has several properties:
class Person
{
string Name;
int Age;
DateTime BirthDate;
}
Then I have a sort of wrapper class with a List<Person>. Within this wrapper class I want to be able to do something like Wrapper["Name"] that returns a new List<string> using .Select(x=>x.Name).
How do I create a wrapper class around an IEnumerable that supports mapping a string to the Property name? Something like the pseudo code below, but obviously it doesn't work. I'm 99.9% sure the solution will have to use Reflection and thats fine.
class Wrapper
{
List<Person> PersonList;
List<dynamic> this[string Column]
{
return PersonList.Select(x => x.[Column]).ToList();
}
}
This may not seem like a good design, but its a fix to eventually enable the correct design from .NET 2.0 days. As I have it right now, the data is stored in Columns, so there is actually a List of Lists within my class right now.
Using the above example there would be three ILists (with a string Title) Name, Age, and Birthdate.
Everything is currently predicated on addressing the columns by their "string" name. I'm trying to convert the data structure to row based with an IEnumberable interface to allow Linq eventually while still maintaining the functionality of my current code.
Is converting the code to a Row based IEnumberable a good idea?