Вставка пробела между переменными класса в методе ToString C # - PullRequest
0 голосов
/ 04 ноября 2011

Я хочу, чтобы пользователь мог распечатать копию клиента, если он этого пожелает.Я размышлял о том, чтобы весь объект класса был преобразован в строку, а затем установлен в элемент управления rich text box в формате, подобном следующему:

Name: blah blah

Age: blah blah

Email: blah blah

Description: blah blah blah
blah blah blah blah blah

и т. Д.межстрочный интервал / специальное форматирование?

Заранее спасибо, Ари

Ответы [ 4 ]

6 голосов
/ 04 ноября 2011

Используйте строки формата , например:

string.Format("{0}: {1}{2}", "Name", this.Name, Environment.NewLine);

Используйте Environment.NewLine, чтобы получить правильный символ новой строки / с.

1 голос
/ 04 ноября 2011
    public override string ToString()
    {
        return string.Join(Environment.NewLine, 
          GetType().GetProperties().Select( 
             item => item.Name + ": " + (item.GetValue(this, null) ?? string.Empty).ToString()
             ));
    }
1 голос
/ 04 ноября 2011

Я предполагал, что у вас есть класс с именем Person, который вы можете переопределить методом ToString, чтобы получить все значения реквизита по отражению и распечатать их, поэтому добавление нового свойства не вызывает никаких изменений в коде:

        public override string ToString()
        {
            var props = GetType().GetProperties();

            string result = "";
            foreach (var prop in props)
            {
                var val = prop.GetValue(this, null);
                var strVal = val != null ? val.ToString() : string.Empty;
                result += prop.Name + " : " + strVal + Environment.NewLine;
            }
            return result;
        }

    }

Также вы можете сериализовать его и просто десериализовать на стороне клиента, это просто, пометив класс как Serializable.

1 голос
/ 04 ноября 2011

Вы можете использовать String.Format () , чтобы обеспечить пользовательское форматирование:

class YourClass
{
    public override string ToString()
    {
        return String.Format(CultureInfo.CurrentCulture,
                             "Description: {0} {1}{2}{3}",
                             this.Name,
                             this.Age,
                             Environment.NewLine,
                             this.Email);
    }
}

Будет выведено:

Description: Name 
Age Email
...