Я пытаюсь сохранить объект в UserData бота.Как сохранить UserData в сложном объекте в Bot
Прежде всего я имею следующий класс:
public class PersonalData
{
public string Name { get; set; }
public int Age { get; set; }
}
В моем Луисе классе мне нужен переменная PersonalData типа.
public class Luis : LuisDialog<object>
{
PersonalData personalData;
Это уже приводит к тому, что отладчик никогда не входит ни в какие мои намерения. Что в этом плохого?
Теперь, если я создаю объект PersonalData в намерениях, как это:
PersonalData personalData = new PersonalData();
будет успешно создан. Но когда я хочу, чтобы присвоить значение моего объекта
if (!context.UserData.TryGetValue(ContextConstants.personalData, out personalData))
{
personalData.Name = userName;
context.UserData.SetValue(ContextConstants.personalData, personalData.Name);
}
Как только программа пытается установить personalData.Name
к userName
я получаю NullReferenceException
и мой PersonalData
объект является нулевым. Я дважды проверял, что имя пользователя не пусто.
Что мне не хватает?
Заранее благодарен!
Мне пришлось инициализировать объект PersonalData после оператора IF следующим образом: personalData = new PersonalData(); и тогда это сработало отлично с вашим решением. – Soeren
Я понял, что если функция «TryGetValue» терпит неудачу, значение out равно null. Вот почему сначала нужно инициализировать переменную объекта, а затем установить любые значения. – Soeren