Вы должны инициализировать экземпляр messageProperties
, прежде чем обращаться к свойствам экземпляра
myMessage.message = new messageProperties
{
messageBody = "Happy weekend",
messageSubject = "Greetings"
};
вместо этого
//below code throws error System.NullReferenceException: 'Object reference not set to an instance of an object.'
//MyMessage.message.messageSubject = "Greetings";
//MyMessage.message.messageBody = "Happy weekend";
Затем вы сможете распечатать его успешно
Console.WriteLine(myMessage.message.messageSubject);
печатает
Привет
Другой вариант - инициализировать вложенные свойства в конструкторе, например
public class standardMessage
{
public standardMessage()
{
message = new messageProperties();
flag = new messageFlags();
}
public messageProperties message { get; set; }
public messageFlags flag { get; set; }
}
Затем вы можете присвоить значения так, как вы хотите
myMessage.message.messageSubject = "Greetings";
myMessage.message.messageBody = "Happy weekend";
Или вы можете закончить sh свой фрагмент кода и напрямую установить вложенное свойство
standardMessage myMessage = new standardMessage();
messageProperties myMsgProperties = new messageProperties();
myMsgProperties.messageSubject = "Hey!";
myMsgProperties.messageBody = "Howdy";
myMessage.message = myMsgProperties;
Console.WriteLine(myMessage.message?.messageSubject);
Prints
Привет!
Нулевой оператор ?
поможет вам избежать NullReferenceException
, если есть