вопрос о распечатке списка <T>на экран - PullRequest
1 голос
/ 15 января 2011

Вопрос по списку;

alt text Когда у меня есть "List<PlugwiseMessage> msg" со значением на картинке:

Я получаю только PlugwiseLib.BLL.BC.PlugwiseMessage в качестве вывода.

Но как я могу увидеть значение с _message, _owner and _type на моем экране? или значение Message, Owner, and Type?

А кто-нибудь может мне объяснить разницу?

Ответы [ 5 ]

3 голосов
/ 15 января 2011

В вашем списке есть коллекция 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);
1 голос
/ 15 января 2011

Ваш список содержит объекты PlugwiseMessage, и вы говорите консоли, чтобы записать их. Для этого экземпляры PlugwiseMessage должны быть преобразованы в строку. ToString () используется для этого, и реализация по умолчанию просто выводит имя типа. Это то, что вы наблюдаете.

Если это возможно, вы должны переопределить метод ToString и настроить его под свои нужды. Если это невозможно, вы должны сбросить значения самостоятельно. Это означает, что вы должны передать msg [i] .Messasge, msg [i] .Owner, ... в WriteLine ().

1 голос
/ 15 января 2011

Проблема в том, что вы печатаете сам объект, а не свойства, поэтому он использует метод ToString () по умолчанию, который возвращает имя типа объекта.

Существует один из двух вариантов.Вы можете переопределить метод ToString () в классе PluginwiseMessage, чтобы вернуть отформатированную строку с нужной вам информацией или, если у вас нет доступа к ней, вы можете сделать следующее:

foreach(PluginwiseMessage message in msg)
{
    Console.WriteLine("{0} {1} {2}", message.Message, message.Owner, message.Type);
    Console.Read();
}

Вы можете легкопереставьте печатаемые параметры и добавьте больше текста к выводу, но это будет просто выводить Message, Owner и Type через пробел.

1 голос
/ 15 января 2011

метод переопределения ToString в типе PlugWiseMessage.

public override string ToString()
        {
            return String.Format("Owner {0}, Message {1}, Type {2}", this.Owner, this.Message, this.Type);
        }
0 голосов
/ 15 января 2011
msg[i].Message
msg[i].Owner
msg[i].Type
...