Can I check a property on a generic object by passing in a lambda expression to get the parameter?
c#, linq
Solution
Well, you could use an Interface, but if the property can change, you could do.
First solution : if you need the property's name
PrintName<T>(T objectToPrint, Expression<Func<T, object>> property)
usage
PrintName(cat, c=> c.Name)
Then to get the "name" of the property, something like that.
var name = (property.Body as MemberExpression).Member.Name
Second solution : if you need the property's value
if you want the value of the property, use a `Func<T, object> func` parameter
// object if you don't know the type of the property,
// you can limit it to string if needed, of course
PrintName<T>(T objectToPrint, Func<T, object> func)
usage
PrintName(cat, c => c.Name)
then
var value = func(cat)
Problem
Simple example, I have a `Cat` object with a `Name` property. I have a class with a method called `PrintName<T>(T objectToPrint)` I can't do `Console.WriteLine(objectToPrint.Name)` because it's type `T`. So can I pass in the parameter as a linq expression that gets the name? Something like; ``` Cat c = new Cat("Bernard the Cat"); PrintName(cat, parameter: c => c.Name); ``` Then PrintName can just do `Console.WriteLine(cat.RunLinq(parameter));`