次のようなものを探しているようです。
public object Eval(object root, string propertyString)
{
var propertyNames = propertyString.Split('.');
foreach(var prop in propertyNames)
{
var property = root.GetType().GetProperty(prop);
if (property == null)
{
throw new Exception(...);
}
root = property.GetValue(root, null);
}
return root;
}
これを使用して作成するにExpression
は:
public Expression Eval(object root, string propertyString)
{
var propertyNames = propertyString.Split('.');
ParameterExpression param = Expression.Parameter(root.GetType, "_");
Expression property = param;
foreach(var prop in propertyName)
{
property = Expression.PropertyOrField(property, prop);
}
return Expression.Lambda(property, param);
}