Вопрос о распечатке списка<T> на экран
Вопрос о Списке;
Когда у меня есть "List<PlugwiseMessage> msg"
со значением с картинки:
Я получаю только PlugwiseLib.BLL.BC.PlugwiseMessage в качестве вывода.
Но как я могу увидеть значение от _message, _owner and _type
на моем экране? или значение Message, Owner, and Type
?
И может кто-нибудь объяснить мне разницу?
5 ответов
В вашем списке есть коллекция PlugwiseLib.BLL.BC.PlugwiseMessage
объекты. Сообщение, Владелец и Тип являются свойствами объекта. Переменные _message, _owner и _type - это вспомогательные поля, предоставляемые свойствами.
Когда вы делаете консольный вывод, вы звоните .ToString()
на PlugwiseMessage
объект. Поведение по умолчанию ToString()
это напечатать название объекта. Если вы хотите отобразить свойства, вам нужно будет добавить несколько строк
Console.WriteLine(msg[i].Message);
Console.WriteLine(msg[i].Owner);
Console.WriteLine(msg[i].Type);
Проблема в том, что вы печатаете сам объект, а не свойства, поэтому он использует метод ToString() по умолчанию, который возвращает имя типа объекта.
Есть один из двух вариантов. Вы можете переопределить метод ToString() в классе PluginwiseMessage, чтобы вернуть отформатированную строку с нужной вам информацией или, если у вас нет доступа к ней, вы можете сделать следующее:
foreach(PluginwiseMessage message in msg)
{
Console.WriteLine("{0} {1} {2}", message.Message, message.Owner, message.Type);
Console.Read();
}
Вы можете легко изменить параметры печатаемых параметров и добавить больше текста к выводу, но это будет просто выводить Message, Owner и Type через пробел.
Ваш список содержит объекты PlugwiseMessage, и вы говорите консоли, чтобы записать их. Для этого экземпляры PlugwiseMessage должны быть преобразованы в строку. ToString() используется для этого, и реализация по умолчанию просто выводит имя типа. Это то, что вы наблюдаете.
Если это возможно, вы должны переопределить метод ToString и настроить его под свои нужды. Если это невозможно, вы должны сбросить значения самостоятельно. Это означает, что вы должны передать msg [i].Messasge, msg [i].Owner,... в WriteLine().
Переопределение метода ToString в типе PlugWiseMessage.
public override string ToString()
{
return String.Format("Owner {0}, Message {1}, Type {2}", this.Owner, this.Message, this.Type);
}