У меня есть класс, который имеет некоторые свойства дерева выражений. когда я пытаюсь сериализовать его, используя атрибут serializable, чтобы настроить состояние сеанса SQL Server, у меня есть следующая ошибка: .. Unable to serialize the session state, SerializationException: Type 'System.Linq.Expressions.Expression
..., как показано на рисунке.Сериализовать класс с помощью свойств выражения Linq для состояния сеанса SQL Server
Кто-нибудь знает, как я могу решить эту проблему, чтобы иметь возможность управлять состоянием сеанса в режиме SQLServer. Благодарю.
Мой класс выглядит что-то вроде этого:
[Serializable]
public class Elements<T>
{
public List<T> elementsList { get; set;}
Expression<Func<int, bool>> lambda = num => num < 5;
}
Благодаря Йерун, эффективно [NonSerialized] атрибут работал, но я до сих пор не знаете о том, почему я не должен сериализовать выражения. Я не закончил сериализацию всех классов, требуемых от проекта, поэтому я не уверен, что если эти выражения не будут проблемой при получении значений сеанса ...? –
Выражение - это функция. Вы только сериализуете данные. Функция постоянна и определена в вашей программе. Параметры (значения сеанса) - это данные. –
Как вы можете видеть, ваше выражение содержит только константу. '5'. В следующий раз, когда ваша программа запустится, все равно будет '5'. Так что это никогда не изменится. Если вы хотите переменную, вам нужно будет создать дополнительное свойство. 'Expression> lambda = num => num