Как указано в комментарии к исходному вопросу @ canton7, вы используете <T>
и Type
, но это не одно и то же.
Возможное решение для этого будет следующим:
public class MyClass<T>
{
private Expression<Func<T, object>> _expression;
public void SetExpression<T>(Expression<Func<T, object>> expression)
{
_expression = expression;
}
}
Используя этот подход, вам нужно будет создать классы, используя следующее
new MyClass<String>();
Это приведет к тому, что _expression
будет иметь тип Expression<Func<String, object>>
.
Если вы не можете установить T
для указанного типа c при создании объекта, вам нужно будет передать выражение непосредственно в метод, в котором вы хотите его использовать, либо в этом, либо сделать тип фиксированным для сохраненного выражения.